Проблема в сгенерированном вами URL.Google устанавливает ограничение в 2000 символов для переданного URL, и мы должны его придерживаться.
Я решил проблему в своем приложении, сгенерировав хэш URL-адреса перед передачей его в Google.
1) Создайте таблицу базы данных для хранения ваших хэшей.Столбцы могут быть хэшем, params, меткой времени.Вы можете улучшить свой код, удалив хеши старше определенного времени, сохранив размер таблицы маленьким и быстрым.
2) Создайте код (my_google_map_helper / get_hash), чтобы сгенерировать хеш для передачи в Google, и прикрепите его куда-нибудь.Я использую PHP, поэтому мой код:
// generate my hash
$hash = sha1(serialize($_GET));
// run an insert ignore into my hashes' table
// get the hash where the hash is $hash
// print my hash
3) Создайте код (get_kml) для извлечения параметров, сохраненных в базе данных из заданного хэша
if(isset($_GET['hash'])):
// select params from my hash table where hash = $_GET['hash']
// unserialize the saved params
// generate and return my KML file
endif;
4)Измените свой JavaScript, чтобы он генерировал хэш перед вызовом функции Google:
$.get('my_google_map_helper/get_hash?' + MY_LONG_PARAMS_LIST, true)
, function(hash){
Polygons = new google.maps.KmlLayer(
{url:'http://my_url/get_kml?hash=' + hash , map:MAP}
);
}
);
Веселитесь!