У меня есть карта Google с более чем 400 полигонами, эти полигоны состоят из более чем 40 000 координат широты и долготы. Это все голландские муниципалитеты, результат можно увидеть здесь: http://silktool.com/maptest.php
Он отлично работает (немного медленно загружается при 2,5 МБ / 500 КБ в сжатом виде) на настольных компьютерах, но при открытии URL-адреса на устройстве iOS происходит сбой Mobile Safari (в Chrome для iOS это работает).
Я подозреваю, что это потому, что это просто слишком много кода или полигонов. Когда загружаю только половину полигонов, Mobile Safari не вылетает.
Я загружаю каждый полигон следующим Javasctipt:
var city1 = new google.maps.Polygon({
paths: [
new google.maps.LatLng(53.0873209365,6.79015076682),
…many many latlng coordinates…
new google.maps.LatLng(53.0716361297,6.81423099069),
new google.maps.LatLng(53.0873209365,6.79015076682)
],
strokeColor: "#fff",
strokeOpacity: 0.5,
strokeWeight: 1,
fillColor: "rgb(60,255,160)",
fillOpacity: 0.7
});
var city2 = new google.maps.Polygon({
paths: [
new google.maps.LatLng(53.0873209365,6.79015076682),
…many many latlng coordinates…
new google.maps.LatLng(53.0716361297,6.81423099069),
new google.maps.LatLng(53.0873209365,6.79015076682)
],
strokeColor: "#fff",
strokeOpacity: 0.5,
strokeWeight: 1,
fillColor: "rgb(60,255,160)",
fillOpacity: 0.7
});
Я хочу, чтобы код не вылетал на iOS, и мне было интересно, как это сделать?
Я думал о нескольких вариантах, но я не знаю, будут ли они работать:
- сделать код более эффективным/компактным
- не используйте карты Google, а, например, Leaflet с параметром сглаживания для упрощения полигонов на разных уровнях масштабирования (http://leaflet.cloudmade.com/reference.html#polyline-options)
- поместите координаты в массив Javascript (теперь они находятся в массиве PHP, и с этим создается javascript).
- больше опций?
Я не знаю, какой вариант выбрать, есть идеи?