Используя карты Google API, как мы можем установить текущее местоположение как местоположение набора по умолчанию с помощью map.setCenter функцию?

Я пишу код JavaScript с помощью Google Maps API.

map = new google.maps.Map2(document.getElementById("map_canvas"));
map.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13);

Вышеупомянутые кодовые наборы местоположение по умолчанию холста карты в Пало-Альто.

Как мы можем записать сценарий таким путем, которым функция setCenter автоматически указывает к текущему местоположению клиента?

20
задан Daniel Vassallo 17 May 2010 в 18:34
поделиться

3 ответа

map = new google.maps.Map2(document.getElementById("map_canvas"));
pos = new google.maps.LatLng(37.4419, -122.1419);
map.setCenter(pos, 13);
map.panTo(pos);
-1
ответ дан 30 November 2019 в 00:27
поделиться

Вы можете использовать HTML5 GeoLocation API в браузерах, которые его поддерживают.

if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(success, error);
} else {
  alert('geolocation not supported');
}

function success(position) {
  alert(position.coords.latitude + ', ' + position.coords.longitude);
}

function error(msg) {
  alert('error: ' + msg);
}
15
ответ дан 30 November 2019 в 00:27
поделиться

Я могу придумать два возможных варианта.

Сначала вы можете рассмотреть возможность использования GeoLocation API , как предлагал ceejayoz . Это очень легко реализовать, и это полностью клиентское решение. Чтобы центрировать карту с помощью GeoLocation, просто используйте:

map.setCenter(new google.maps.LatLng(position.coords.latitude, 
                                     position.coords.longitude), 13);

... внутри обратного вызова success () метода GeoLocation getCurrentPosition () .

К сожалению, в настоящее время только несколько современных браузеров поддерживают GeoLocation API. Поэтому вы также можете рассмотреть возможность использования серверного решения для преобразования IP-адреса клиента в местоположение пользователя, используя такую ​​службу, как MaxMind's GeoLite City . Затем вы можете просто геокодировать город и страну пользователя в браузере, используя Google Maps API. В качестве краткого примера можно привести следующее:

<!DOCTYPE html>
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps API Geocoding Demo</title> 
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false"
            type="text/javascript"></script> 
  </head> 
  <body onunload="GUnload()"> 

    <div id="map_canvas" style="width: 400px; height: 300px"></div> 

    <script type="text/javascript"> 

    var userLocation = 'London, UK';

    if (GBrowserIsCompatible()) {
       var geocoder = new GClientGeocoder();
       geocoder.getLocations(userLocation, function (locations) {         
          if (locations.Placemark) {
             var north = locations.Placemark[0].ExtendedData.LatLonBox.north;
             var south = locations.Placemark[0].ExtendedData.LatLonBox.south;
             var east  = locations.Placemark[0].ExtendedData.LatLonBox.east;
             var west  = locations.Placemark[0].ExtendedData.LatLonBox.west;

             var bounds = new GLatLngBounds(new GLatLng(south, west), 
                                            new GLatLng(north, east));

             var map = new GMap2(document.getElementById("map_canvas"));

             map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
             map.addOverlay(new GMarker(bounds.getCenter()));
          }
       });
    }
    </script> 
  </body> 
</html>

Просто замените userLocation = 'London, UK' разрешенным адресом на стороне сервера. Ниже приведен снимок экрана из приведенного выше примера:

Render google map in based on selected location

Вы можете удалить маркер, избавившись от строки map.addOverlay (new GMarker (bounds.getCenter ())); .

10
ответ дан 30 November 2019 в 00:27
поделиться
Другие вопросы по тегам:

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