2010-05-29 2 views
11

Я новичок в Google Maps api. Я хотел бы предложить предложения по достижению следующих функций: всякий раз, когда страница загружается, карта будет загружаться по всей территории США. Представьте себе коробку вокруг США с заданными параметрами lat/longs, определяющими минимальные и максимальные границы. Мне нужна карта для загрузки с соответствующим увеличением (и масштабирование должно быть отключено), чтобы этот блок составлял всю карту.API Карт Google - загрузить US

В принципе, мне интересно, есть ли функция, которая загружает карту, основанную на границах lat/long (или какой-то способ добиться этого), а не загружая карту с учетом уровня масштабирования.

ответ

14

Предполагая, что вы используете v3 API, вы можете использовать метод fitBounds следующим образом:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps fitBounds</title> 
    <script src="http://maps.google.com/maps/api/js?sensor=false" 
      type="text/javascript"></script> 
</head> 
<body> 
    <div id="map" style="width: 500px; height: 350px;"></div> 

    <script type="text/javascript"> 
     var myOptions = { mapTypeId: google.maps.MapTypeId.ROADMAP }; 
     var map = new google.maps.Map(document.getElementById("map"), myOptions); 
     var geocoder = new google.maps.Geocoder(); 

     geocoder.geocode({'address': 'US'}, function (results, status) { 
     var ne = results[0].geometry.viewport.getNorthEast(); 
     var sw = results[0].geometry.viewport.getSouthWest(); 

     map.fitBounds(results[0].geometry.viewport);    
     }); 
    </script> 
</body> 
</html> 

Скриншот:

Google Maps fitBounds

В приведенном выше примере, я получаю видовое окно США по геокодированию. Тем не менее, вы также можете создать объект LatLngBounds, пройдя пункты с северо-востока и юго-запада, а метод fitBounds будет масштабировать и панорамировать вашу карту таким образом, чтобы она поместилась на холсте карты.

+0

спасибо! fitBounds() именно то, что я искал – hjk

+0

@hjk: Я ответил [аналогичный вопрос несколько месяцев назад] (http://stackoverflow.com/questions/2494756/fitbounds-in-google-maps-api-v3- делает-не-подходит-оценки/2496558 # 2496558). Он показывает красную рамку, как реагирует 'fitBounds'. Красный ограничивающий прямоугольник представляет собой «LatLngBounds», который вы передадите 'fitBounds'. –

+0

Спасибо, Дэниэл, это полезно. Таким образом, с Google Maps невозможно настроить глубину масштабирования? То есть их уровни масштабирования фиксированы? – hjk

1

Ну, так как размер и форма США не меняются, что часто вы можете вручную найти оптимальные настройки и использовать их.

+1

Да, но координаты моей рамки могут меняться ... – hjk