Центр по умолчанию в Соединенных Штатах?
По умолчанию Google предлагает этот пример того, как центрировать карту на Чикаго, IL:
var chicago = new google.maps.LatLng(41.850033, -87.6500523);
Можно ли сосредоточить центр внимания по умолчанию на всей территории Соединенных Штатов? Я ничего не могу найти.
Ответы
Ответ 1
Используйте Чикаго как центр, а затем измените zoom
.
Вот пример здесь. Немного переработанная версия (непроверенная!):
gMap = new google.maps.Map(document.getElementById('map'));
gMap.setCenter(new google.maps.LatLng(41.850033, -87.6500523));
gMap.setZoom(ANewZoomLevel);
Вам нужно будет поэкспериментировать, чтобы найти правильный уровень масштабирования для ваших нужд.
Ответ 2
Один из вариантов - использовать геокодер. Если вы geocode "United States of America" , он возвращает "предложенный видовой экран", который можно использовать для центрирования и масштабирования карты:
"viewport": {
"Z": {
"b": 25.82,
"d": 49.38
},
"ca": {
"b": -124.38999999999999,
"d": -66.94
}
}
В центре/месте, куда возвращается геокодер: 37.09024, -95.712891
переводит на:
"viewport": {
NorthEast: { lat:49.38, lng:-66.94 },
SouthWest: { lat:25.82, lng:-124.39 }
}
fiddle
Есть две одинаковые части информации, границы и предлагаемый видовой экран. Я считаю, что границы включают в себя Аляску и Гавайи, окно просмотра может удовлетворить ваши потребности лучше.
Самый простой способ - вручную центрировать карту и масштабировать ее так, как вам нравится, а затем получать текущие значения с помощью getCenter() и getZoom(), а затем использовать их для инициализации карты.
Вот пример который использует геокод для увеличения в странах из выпадающего списка (он использует границы, а не viewport, который для США отличается)
Ответ 3
Поскольку это все Соединенные Штаты, кажется глупым попасть в десятичные числа с помощью LatLng. Мне нравится:
new google.maps.Map($map, {
center: new google.maps.LatLng(39, -95),
zoom: 3
});
Пример jsfiddle
Ответ 4
Используйте Географический Центр Смежных Соединенных Штатов:
Ливан, штат Канзас. Наверное, самое скучное место на земле.
http://www.kansastravel.org/geographicalcenter.htm
Я считаю, что масштабирование 3, 4 или 5 идеально.
gMap = new google.maps.Map(document.getElementById('map'));
gMap.setCenter(new google.maps.LatLng(39.8097343, -98.5556199));
gMap.setZoom(3);
Ответ 5
Fit bounds работает лучше всего, потому что масштабирование зависит от ширины устройства. То, что хорошо выглядит на одном устройстве, слишком велико или слишком мало для другого устройства. Следовательно:
var bounds = new google.maps.LatLngBounds(
new google.maps.LatLng(25.82, -124.39),
new google.maps.LatLng(49.38, -66.94)
);
map.fitBounds(bounds);
Ответ 6
Использование Чикаго не очень гибко. Возьмите очки в крайних кардиналах Соединенных Штатов, создав, таким образом, ограничивающий прямоугольник, затем добавьте их к объекту bounds и используйте это, чтобы соответствовать вашим границам и масштабировать карту:
var bounds = new google.maps.LatLngBounds();
bounds.extend(new google.maps.LatLng(24.891752, -98.4375));
bounds.extend(new google.maps.LatLng(40.351289, -124.244385));
bounds.extend(new google.maps.LatLng(44.488196, -70.290656));
bounds.extend(new google.maps.LatLng(49.000282, -101.37085));
map.setCenter(bounds.getCenter());
map.fitBounds(bounds);
Это будет соответствовать вашей карте независимо от размера холста.