0

请帮忙。尝试创建芝加哥地图,并将我当前已知的位置显示为该地图上的标记。问题是(尽管我在任何教程或文档中都没有明确提及这一点),看来我必须marker在与(也许就在之后?)相同的范围内声明 var 我声明了 map---global variables don' t 似乎工作。这很困难,因为我正在进行异步调用,因此position在我定义的回调函数中只验证了我的标记。因此以下代码不起作用...

(function() {

  var chicago = new google.maps.LatLng(41.87811, -87.62980);
  var info = document.getElementById("info");
  var map;

  function showError(error) 
  {
    info.innerHTML += "Error: " + error.message;
  }

  function getLocation(position) 
  { 
    current_location = new google.maps.LatLng(
      position.coords.latitude, position.coords.longitude);

    var marker = new google.maps.Marker({
      position: current_location,
      map: map
    });
  }

  window.onload = function() {

    var mapOptions = {
      zoom: 10,
      center: chicago,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }

    map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

    if (navigator.geolocation) 
    {
      navigator.geolocation.getCurrentPosition(getLocation, showError);
    }
  } 

})();

我看不出有什么干净的出路,但很想以其他方式展示。

4

1 回答 1

1

如果我对您的理解正确,那么这应该可以,这就是我在自己的应用程序中的找到位置处理标记的异步创建的方式,并且效果很好!如果这不是您的意思,请告诉我!

function initialize() {
    var mapOptions = {
        zoom: 10,
        center: new google.maps.LatLng(lat, lon),
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        zoomControl: true,
        zoomControlOptions: {
            style: google.maps.ZoomControlStyle.LARGE
        }
    };
    map = new google.maps.Map(document.getElementById('gmaps'), mapOptions);
    locateMe();


}


function locateMe() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
            initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
            map.setCenter(initialLocation);
            map.setZoom(15);
            setMarkerPosition(position.coords.latitude, position.coords.longitude);

            updateLocation();
        }, function() {
            handleNoGeolocation(browserSupportFlag);
        });
    } else {
    }
}


function setMarkerPosition(lati, longi) {
    var latLongMarker = new google.maps.LatLng(lati,longi);
    marker = new google.maps.Marker({
        position: latLongMarker,
        map: map,
        draggable: false,
        title: "Your Location"
    });
}
于 2013-06-02T07:58:29.357 回答