Центр по умолчанию в Соединенных Штатах?

По умолчанию 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);

Это будет соответствовать вашей карте независимо от размера холста.