Клуб API Карт

KML GET-запрос.

Пост в архиве.
Здравствуйте!

Можно ли запросить KML данные POST-запросом при помощи кода:

      var kml = new YMaps.KML(kml_url);


Если нет, то можно ли вручную скачать KML и скормить функции:

      var kml_data = post_ajax_kml(URL); //скачать файл POST-методом
      var kml = new YMaps.KML(kml_data);


?

Спасибо.
5 комментариев

Такой возможности нет, да и само решение выглядит странным. Какую задачу вы таким образом решаете?

У нас карта разбита на квадраты, а каждый запрос говорит серверу точки каких квадратов вернут в виде KML.


 


Т.о. URI запроса может раздуваться до больших размеров, к примеру:


http://server.ru/get_kml.php?quads=100001,100002,100003....,199999


В итоге такой URI не принимается браузером и отсекается до некоторых размеров (от 255 символов и выше в разных браузерах).


 


Ищем решение проблемы.  Можно разбить этот запрос на N последовательных запросов, где аргумент quads будет не таким длинным, но это, кажется, не слишком эффективно.


 


POST-запрос, вероятно, решил бы проблему.


 

Кажется, активные области в вашем случае будут гораздо производительнее, чем KML.

Спасибо

Конвертация kml данных в javascript объекты происходит на серверной стороне, поэтому на клиенте функции, которой можно было бы скормить данные нет. После того как вы загрузите данные постом, нужно будет разобрать их вручную и создать по ним плейсмарки. Опять же избавитесь от промежуточного звена в виде наших серверов.


 


А где вы сталкнулись с ограничением на длину урла в 255 символов? Нижний порог известный мне это 2KB в ИЕ, что много больше 255.


Так же по виду вашего примеро можно предположить, что перевод номера квадрата из десятичной системы, например в 64 сильно укоротит урлы. Кроме того можно дать возможность указывать диапазоны номеров квадратов, в том числе двумерные, т.е. 11:33 означало бы что нужны квадраты 11,12,13,21,22,23,31,32,33. Вообщем то тут нужно знать вашу схему нумирации и сценарий использования.


 


И как уже написал Азат,  рекомендую вам посмотреть на активные области, на данный момент это наиболее производительный вариант отрисовки. Или расскажите подробнее о вашей задаче, я возможно я смогу что-то подсказать.