Я использую Яндекс Карта Javascript API, чтобы отображать тысячи точек (около 20К) на карте по всему миру. В этих точках также есть воздушные шары. По этой причине я использую LoadingObjectManager.
ymaps.ready(init);
function init() {
var geolocation = ymaps.geolocation,
myMap = new ymaps.Map('map', {
}, {
searchControlProvider: 'yandex#search',
});
myMap.options.set('scrollZoomSpeed', 0.5);
/**
* Comparing the position calculated from the user's IP address
* and the position detected using the browser.
*/
geolocation.get({
provider: 'yandex',
mapStateAutoApply: true
}).then(function (result) {
myMap.geoObjects.add(result.geoObjects);
});
geolocation.get({
provider: 'browser',
mapStateAutoApply: true
}).then(function (result) {
/**
* We'll mark the position obtained through the browser in blue.
* If the browser does not support this functionality, the placemark will not be added to the map.
*/
myMap.geoObjects.add(result.geoObjects);
});
let loadingObjectManager = new ymaps.LoadingObjectManager('{{url()->current()}}/coordinates?&coordinates=%b&x=%x&y=%y&z=%z&number=%d',
{
// Enabling clusterization.
clusterize: true,
// Cluster options are set with the 'cluster' prefix.
clusterHasBalloon: false,
// Object options are set with the geoObject prefix.
geoObjectOpenBalloonOnClick: true,
});
myMap.geoObjects.add(loadingObjectManager);
}
Сначала я подумал, что LoadingObjectManager автоматически запоминает области, для которых ранее загружались данные, но после записи координат я обнаружил, что каждый раз, когда уровни масштабирования становятся меньше, увеличивается диапазон окна просмотра запрашивается LoadingObjectManager с сервера, что приводит к запросу огромного количества данных из базы данных, и в результате ответ -> json () в Laravel выдает исключение ограничения памяти (разрешенная память исчерпана). Теперь я ищу способ уменьшить географический диапазон каждый раз, когда Яндекс API запрашивает и заставить его запоминать регионы, для которых он ранее запрашивал баллы.