OK, I managed to recall how to set the default map location when there are no results. (It's not intuitive, and we at least need to document this, I'll create a ticket for the documentation team when I'm done here.)
Where you have a View that generates the results for a map, to set a default location for when there are no results to display you must provide lat and lon coordinates for the desired map centre. And to be able to enter those you must
1. temporarily disable the setting "Adjust zoom and center to show all markers at once" (screenshot 1)
2. enter lat and lon coordinates (screenshot 2)
3. re-enable the setting and save the page
Now when there are no results to display the map should centre on your desired location, and not off the coast of Africa.
Next, the question of no initial results.
Ordinarily this is fairly straightforward, where you don't want the output of a View (the unfiltered list of results) to display until a filter value has been chosen, and it is explained in the documentation here: https://toolset.com/course-lesson/creating-a-custom-search/#hide-the-search-results-until-the-first-search
The complication in your case is that you are not just outputting a list of results with the View, but generating the markers on the map with this same View. In the solution above the View query returns the unfiltered results, but using the conditional block these are not output on the screen unless some filter has been applied. But the query returns results, and these are being passed to the Map block to generate the markers.
The only way to prevent the markers being created before a filter has been applied is to modify the query generated by the View so that there really are no results returned (rather than the results effectively being hidden).
We can do that using the Views API hook wpv_filter_query_post_process. Add the following code to your site (you could add it to your theme's functions.php or add as a code snippet at Toolset > Settings > Custom Code):
/**
* No initial results
*
* Don't show View results until a filter has been applied
*
* Tests for custom field filters, taxonomy filters, text searches, or maps distance filter
*/
function tssupp_no_initial_results( $query_results, $view_settings, $view_id ){
$target_views = array( 123 ); // Edit to add IDs of Views to use this with
if ( in_array( $view_id, $target_views ) ) {
// is there some search term set?
if ( !isset( $query_results->query['meta_query'] ) && !isset( $query_results->query['tax_query'] ) && !isset( $query_results->query['s'] ) && !isset( $_REQUEST['toolset_maps_distance_center'] ) ) {
$query_results->posts = array();
$query_results->post_count = 0;
$query_results->found_posts = 0;
}
}
return $query_results;
}
add_filter( 'wpv_filter_query_post_process', 'tssupp_no_initial_results', 10, 3 );
You will need to edit the ID of the View you want to apply this to ("123" in the example). Note, finding the View when using the block editor is not so obvious. Go to Toolset > Settings and under "Editing experience" choose the option to show both block and legacy UIs. After refreshing the page, you should then be able to go to Toolset > Views and see a list of Views on your site together with the View ID, which is what you need to edit in the above code.
So, on the basis of that code together with the map tweak above, when you first arrive at the page there should be no results shown, and the map should be centred where you intend.
As for the continuously updating results you currently have, that would be because of your pagination settings, which are effectively set to work like a slider, rotating the results every 5 seconds (screenshot). You presumably want a manual pagination setting.