NetworkError: 414 Request-URI слишком большой с Google Maps v3 - PullRequest
3 голосов
/ 15 февраля 2012

Мое приложение создает карту с помощью Google Maps v3, на которой много маркеров и кластеров, и она отлично работает.

Та же карта, которую я должен показать и в другом окне браузера, но по какой-то причине не может (получить только пустую карту без маркеров / кластеров на ней).Я проверил ошибку в Firebug, и появляется сообщение:

NetworkError: 414 Request-URI Too Large

Итак - те же карты, в первом окне браузера все в порядке,во второй это не так.

Просто чтобы сказать, что я открываю вторую карту (во втором окне), отправляя параметры о каждом маркере, который у меня есть на первой карте, поэтому URL очень длинный (2700 символов).

Есть ли способ решить эту проблему?Это проблема с длинной строкой URL?

Можете ли вы помочь мне с этим?

1 Ответ

0 голосов
/ 07 марта 2013

Проблема в сгенерированном вами 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}
        );
    }
);

Веселитесь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...