API карт Google - отображение маршрутов / полилиний, альтернатива kmlLayer - PullRequest
1 голос
/ 06 марта 2012

Я занимаюсь разработкой веб-приложения, в котором у меня есть база данных с географически расположенными объектами, и у каждого есть свои геоданные, хранящиеся в файле kml.При отображении объекта на карте Google с помощью карт Google js api v3 у меня возникает следующий сценарий: сначала я выполняю вызов json, и он возвращает массив объектов.Каждый объект json имеет свое географическое местоположение, либо маркер gmap, либо маршрут / полилинию.Каждый объект имеет свойства: id, имя, описание, kml_url… и т. Д. Kml_url - это URL-адрес файла kml, который используется для построения объекта на карте с помощью вызова «new google.maps.KmlLayer (…)».Каждый созданный kmlLayer привязан к своему объекту json, поэтому им можно манипулировать (например, показать / скрыть) через этот объект с помощью js.Затем каждый kmlLayer получает свой прослушиватель событий щелчка мыши с помощью google.maps.event.addListener (…), и ответ динамически генерируется из атрибутов объекта json kml (он захватывает атрибут id и через другой вызов json отображает объектдетали).

Проблема в том, что при создании более чем, скажем, 10 кмл слоев я нажимаю "Ошибка NetworkEr: 414 слишком большой URI запроса". Я обнаружил, что могу получитьизбавиться от ошибки, используя сетевые ссылки kml, но AFAIK, в этом случае я теряю возможность манипулировать каждым объектом через его объект json (с созданным ограниченным kmlLayer).

Какая альтернатива для такого рода приложений, может быть, вообще не использовать kml-s? Если я использую оверлеи и сам рисую все маршруты и маркеры, ябоюсь, что у меня возникнут проблемы с масштабируемостью, потому что отрисовка 15 маршрутов, каждый с 50 полилинейными узлами и еще 15 маркерами, займет у клиента значительное количество времени.

Спасибо, Эмиль

1 Ответ

1 голос
/ 06 марта 2012

Я имел большой успех с GeoXML3 для обработки большого количества файлов KML, каждый из которых имеет много элементов (включая метки, полилинии и полигоны). Я рекомендую вам получить ветку polys , которая на данный момент имеет больше возможностей. В настоящее время в филиале KMZ предпринимаются большие усилия, которые будут обрабатывать KMZ (zip-файлы), но, на мой взгляд, это не совсем готово к производству.

Для моего собственного руководства я создал проект Github , который использует Google API v3, Geoxml3, и отображает боковую панель и элементы управления слоями. Он также использует некоторые более продвинутые функции, такие как ловушка afterParse и добавление, которое я использую, запускает анализируемое событие для объекта Geoxml3 .

...