центрирование карты Google на основе значений маркера lat long - PullRequest
5 голосов
/ 18 января 2010

Я наношу на карту около 20 маркеров, мест в городе.Когда я использую getLatLng, чтобы найти центр города, он всегда немного удаляется из мест, которые я рисую, что означает, что маркеры обычно расположены в углу моей карты, а не в центре.

есть лиспособ центрировать карту в месте, которое является более центральным для моих местоположений?Я предполагаю, что мне нужна какая-то "средняя" координата широты / долготы, рассчитанная по имеющимся у меня 20 широтам / длинным значениям.

Возможно ли это?

1 Ответ

6 голосов
/ 18 января 2010

Найти центр должно быть довольно легко. Просто найдите самые маленькие и самые большие координаты широты и долготы в вашей группе из 20.

Центр будет [min_lat + (max_lat - min_lat)/2, min_long + (max_long - min_long)/2].

Что-то вроде:

var points = Array(); 
points.push(new GLatLng( xxx, yyy )); 
...

min_lat = 90;
max_lat = -90;
min_long = 180; 
max_long = -180; 
for (p in points) {
    if (p[0] < min_lat) {
        min_lat = p[0];
    }
    if (p[0] > max_lat) { 
        max_lat = p[0];
    }
    if (p[1] < min_long) {
        min_long = p[1];
    }
    if (p[1] > max_long) { 
        max_long = p[1];
    }
}

center = new GLatLng(min_lat + (max_lat - min_lat) / 2, 
                     min_long + (max_long - min_long) / 2];
map.setCenter(center, 10); 

Этот код, вероятно, будет иметь проблемы, если ваши точки пересекают границы долготы (& plusmn; 180 & deg;). Также предполагается, что точки расположены на плоской поверхности (а не на поверхности сферы).

Ничто из этого не должно иметь большого значения, если вы говорите о координатах в нескольких сотнях миль друг от друга в США.

...