The acceptance criteria should be part of the feature story and be the basis for the test cases. There shouldn't be a separate test story, they might be a subtask of the story!
Should the acceptance criteria for a user story form the basis for the test cases when testing that feature?
Of course they should be! You define which criteria have to be met, that the story fullfills its usecase. These criteria should be tested to make sure the story is done. This means you have to implement different kinds of tests (unit tests, regression tests...).
Or, should there be a seperate story for testing, whose acceptance criteria is that the feature being tested passes the relevant section of the function specification?
The Scrum guide is really clear about that, when defining the term "Done": "Each Increment is ... thoroughly tested, ensuring that all Increments work together." Meaning that the story is complete, when all tasks are done - including testing. So no extra story or even an extra team for that!
What might the acceptance criteria be and how would this relate to the testing?
I modified your story example by removing implementation details, there should only be customer need described. The "Click-part" has been move to the acceptance criteria.
As a user, I want to be able to display a map with the reported address marked, so that I can visualize where the event is occurring.
- There is a button 'Show Map' to open the map view (Google maps)
- The reported adress is marked on the map
- If there is no adress marked, the button is disabled
These criteria should now be tested, try to think about sunshine scenarios and common errors - don't forget the edge cases.
I don't know your application, so I try to keep it generic. You have some kind of user tests, where a team mate clicks through the app and clicks the "Show Map" button (marked map appears). Another thing would be to make sure the google maps api is able to understand your adresse format (might be automated) or you tests whats happending if Google Maps is down. Furthermore you have some kind of unit tests, that might test what's happening when the adress field is empty.