Преобразуйте lat/lon в пиксели и назад

Я использую карты Google в своем приложении, и у меня есть веб-сервер с databse, заполненным значениями lat/lon. Я хочу отметить их на карте, но я также хочу кластеризировать их вместе, если они на определенном пиксельном расстоянии друг друга.

Я фигурирую, получаю ли я все свои точки от базы данных, я должен смочь сделать что-то вроде этого (псевдокод):

clusters[];
while(count(points)) {
    cluster[];
    point = points.pop();
    boundingbox = pixelsToBB(point, pixeldistance, zoomlevel);
    query = "select * from database where lat > boundingbox.minlat 
             and lat < boundingbox.maxlat and lng > boundingbox.minlng
             and lng < boundingbox.maxlng";
    for (result in executedquery) {
        cluster[] += result;
        points.remove(result);
    }
    clusters[] += cluster;
}

pixelsToBB(point, distance, zoomlevel) {
    center = convertXY(point, zoomlevel);
    maxlng = convertToLng(center.X, distance, zoomlevel);
    minlng = convertToLng(center.X, -distance, zoomlevel);
    minlat = convertToLat(center.Y, -distance, zoomlevel);
    maxlat = convertToLat(center.Y, distance, zoomlevel);
    return boundingbox(maxlng, maxlat, minlng, minlat);
}

Что мой pixelsToBB функционировал бы потребность сделать с zoomlevel? ИЛИ скорее что было бы, мой convertToXY, convertToLng и convertToLat должны сделать? Я думаю об этом правильный путь или являюсь там какими-либо лучшими способами сделать это? Я даже не уверен, что искать, поэтому если это спросили, прежде чем я буду сожалеть.

15
задан AmITheRWord 4 August 2010 в 23:16
поделиться

1 ответ

Для этого есть пример JavaScript на этой странице как часть документации по API Карт Google. Имейте в виду, что вам нужно посмотреть на исходный код страницы, чтобы увидеть его. Это не настоящая страница документации, а скорее пример.

8
ответ дан 1 December 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: