Клуб API Карт

Подгрузка объектов на карту через AJAX

Пост в архиве.

Коллеги, помогите решить задачу.

Необходимо загружать точки на карту при её перетаскивании пользователем.

Как можно определить, находятся ли точки в загруженном тайле? (на сервере, точка хранит только широту и долготу lat&lng)

 

Или есть более простые методы решения?

4 комментария

mysql, например, поддерживает geospatial indexes.

Вы можете отправлять в запросе не номера тайлов, а границы области тайла в геокоординатах.

И на сервере просто смотреть, попадает ли точка в указанные границы.

Вот как получить координаты из номера тайла через апи:

 

// получаем верхний левый угол тайла в глобальных пиксельных координатах.

var topLeftPoint = [

        tileNumber[0] * Math.pow(2, tileZoom) * 256,

        tileNumber[1] * Math.pow(2, tileZoom) * 256

    ],

    // нижний правый угол тайла - это как верхний левый угол тайла, только на 256 больше :) 

    rightBottomPoint = [topLeftPoint[0] + 256, topLeftPoint[1] + 256],

    // и теперь переведем глобальные пиксельные координаты углов в долготу и широту

    topLeftCoordPoint = ymaps.projection.wgs84Mercator.fromCoordPoint(topLeftPoint, tileZoom),

    rightBottomCoordPoint = ymaps.projection.wgs84Mercator.fromCoordPoint(rightBottomPoint, tileZoom);

 

Вот эти две точки и надо переслать в запросе.

 

 

То есть выбирать нужно точки, у которых

 

( rightBottomCoordPoint < point.lat < topLeftCoordPoint.lat )

AND

( topLeftCoordPoint.lng < point.lng < rightBottomCoordPoint.lng )

типа того, да