When `latitude`, `longitude`, and/or zoom are missing, we should calculate proper position and zoom dynamically on the client. Make sure to exclude extreme lat/long - this way a [[ https://en.wikivoyage.org/wiki/Template:Mapmask | mapmask ]] will not affect calculations. Mapmask uses `[[36000,-180],[36000,180],[-36000,180],[-36000,-180],[36000,-180]]` -- this way user can scroll left and right on the map pretty far without seeing any non-masked space
Rule for ignoring points: Use point IIF: `-180 <= longitude <= 180 && -90 <= latitude <= 90` (longitude is the first value, latitude is second in geojson, but most code usually uses lat,long order). Also, to understand their meaning, try the example below.
Simple: [[ http://stackoverflow.com/questions/18146070/finding-center-and-zoom-level-in-leaflet-given-a-list-of-lat-long-pairs | stackoverflow solution ]]
Harder, with some math (only if leaflet doesn't handle it): The algorithm seems fairly simple - find min/max of both lat & lon, excluding outliers. Afterwards, increase the range by a small percentage, take into account size of the map window, and calculate zoom such that it would include all of the points. Set location to the median of all points.
P.S. If you want to see what these points mean, insert a map in Visual Editor, and paste this geojson at the bottom. Try changing these numbers by hand to see how they affect the selected region:
```lang=json
{
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [[
[-170, -83],
[-170, 83],
[170, 83],
[170, -83]
]]}}]}
```