2012-12-26 39 views
0

我想顯示用戶的地理位置附近的所有博物館。當我想用user_lat_long替換init中的latLng時,我遇到了問題。出於某種原因,在init中使用alert時,user_lat_long值未定義。你能向我解釋我做錯了什麼嗎?我仍然是JS的新手。謝謝!援助與用戶的位置附近的地方Google JS API

function init() { 
 var latLng = new google.maps.LatLng(44.43, 26.11); 
 Demo.map = new google.maps.Map(Demo.mapContainer, { 
   zoom: 13, 
   center: latLng, 
   mapTypeId: google.maps.MapTypeId.ROADMAP}); 
   var request = { 
     location: latLng, 
     radius: 50000, 
     types: ['museum'] 
   }; 
   infowindow = new google.maps.InfoWindow(); 
   var service = new google.maps.places.PlacesService(Demo.map); 
   service.nearbySearch(request, function (results, status) { 
       if (status == google.maps.places.PlacesServiceStatus.OK) { 
         for (var i = 0; i < results.length; i++) { 
           { 
                var placeLoc = results[i].geometry.location; 
                var marker = new google.maps.Marker({ 
                  map: Demo.map, 
                  position: placeLoc 
                }); 

                google.maps.event.addListener(marker, 'click', function() { 
                  infowindow.setContent(restults[i].name); 
                  infowindow.open(map, this); 
                }); 
              } 
         } 
       } 
     }); 

} 

google.maps.event.addDomListener(window, 'load', init); 
function pozitie() { 
   if(navigator.geolocation) { 

    navigator.geolocation.getCurrentPosition(currentPositionCallback); 

    } else { 

    alert('The browser does not support geolocation'); 

} 
function currentPositionCallback(position) { 

user_lat_long = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 

var marker = new google.maps.Marker({ 
position: user_lat_long, 
map: Demo.map, 
icon: image 
}); 

Demo.map.setCenter(user_lat_long); 
Demo.map.setZoom(15); 

} 

回答

0

我認爲你錯過了pozitie函數的右括號,這裏是修改後的代碼。我相信你在服務器上運行這個代碼(而不是本地HTML文件),否則你將無法獲得用戶位置。

function init() { 
    var latLng = new google.maps.LatLng(44.43, 26.11); 
    Demo.map = new google.maps.Map(Demo.mapContainer, { 
    zoom: 13, 
    center: latLng, 
    mapTypeId: google.maps.MapTypeId.ROADMAP}); 
    var request = { 
     location: latLng, 
     radius: 50000, 
     types: ['museum'] 
    }; 
    infowindow = new google.maps.InfoWindow(); 
    var service = new google.maps.places.PlacesService(Demo.map); 
    service.nearbySearch(request, function (results, status) { 
     if (status == google.maps.places.PlacesServiceStatus.OK) { 
      for (var i = 0; i < results.length; i++) { 
      { 
       var placeLoc = results[i].geometry.location; 
       var marker = new google.maps.Marker({ 
        map: Demo.map, 
        position: placeLoc 
       }); 

       google.maps.event.addListener(marker, 'click', function() { 
        infowindow.setContent(restults[i].name); 
        infowindow.open(map, this); 
       }); 
       } 
      } 
     } 
     }); 

} 

google.maps.event.addDomListener(window, 'load', init); 
google.maps.event.addDomListener(window, 'load', pozitie);//Assuming you are calling this method after init is called 
function pozitie() { 
    if(navigator.geolocation) { 

    navigator.geolocation.getCurrentPosition(currentPositionCallback); 

    } else { 

    alert('The browser does not support geolocation'); 

} 
} 
function currentPositionCallback(position) { 

var user_lat_long = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 
var marker = new google.maps.Marker({ 
position: user_lat_long, 
map: Demo.map 
}); 

Demo.map.setCenter(user_lat_long); 
Demo.map.setZoom(15); 

}