2014-02-18 226 views
0

我是一個Javascript新手,我似乎無法得到此腳本的工作。Google Maps Places API

管理得到地理定位工作,但沒有地方標記顯示加載時。 試過很多東西,你們可以幫我嗎?

var map; 

    function initialize() { 
    var mapOptions = { 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     zoom: 13 
    }; 
    map = new google.maps.Map(document.getElementById('map-canvas'), 
    mapOptions); 

    var input = document.getElementById('searchtxt'); 
    var autocomplete = new google.maps.places.Autocomplete(input); 

    autocomplete.bindTo('bounds', map); 
    if(navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(function(position) { 
     var pos = new google.maps.LatLng(position.coords.latitude, 
             position.coords.longitude); 

     map.setCenter(pos); 
    }, function() { 
     handleNoGeolocation(true); 
    }); 
    } else { 
    // Browser doesn't support Geolocation 
    handleNoGeolocation(false); 
    } 
    var request = { 
     location: pos, 
     radius: 1500, 
     types: ['restaurant'] 
    }; 
    alert('OK -> ' + request); //THIS DOESN'T SHOW. WHY?? 
    var service = new google.maps.places.PlacesService(map); 
    service.nearbySearch(request, callback); 
} 
function handleNoGeolocation(errorFlag) { 
    if (errorFlag) { 
    var content = 'Error: The Geolocation service failed.'; 
    } else { 
    var content = 'Error: Your browser doesn\'t support geolocation.'; 
    } 

    var options = { 
    map: map, 
    position: new google.maps.LatLng(60, 105), 
    content: content 
    }; 

    map.setCenter(options.position); 
} 


function callback(results, status) { 
    if (status == google.maps.places.PlacesServiceStatus.OK) { 
     for (var i = 0; i < results.length; i++) { 
      createMarker(results[i]); 
     } 
    } else { 
} 
} 

function createMarker(place) { 
    var placeLoc = place.geometry.location; 
    var marker = new google.maps.Marker({ 
    map: map, 
    position: place.geometry.location 
    }); 

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

google.maps.event.addDomListener(window, 'load', initialize); 

即使ALERT不顯示,但如果我把它放在var request語句之前,它確實顯示:「OK - > Undefined」。

怎麼了?

謝謝。

+0

你連查反讀取的問題之後? – Phil

回答

0

getCurrentPosition()異步激活。這意味着var pos變量未在此範圍內設置。這留下了pos未定義。當您嘗試將其設置在var options對象中時,會引發錯誤。這打破了代碼,並且從未被解僱。

alert()在對象之前工作,因爲錯誤的賦值,location: pos,尚未發生。

這個錯誤清楚地顯示在控制檯中,所以我建議學習以這種方式進行調試。

這裏是我問a'while回來,可能會幫助你一個問題: how to use/store JSON data after the callback has fired?

+0

謝謝菲爾。 我瞭解問題並嘗試糾正它。 我是一個真正的JavaScript新手,很難學習它。我將在var中定義pos,因此我可以在代碼中使用它。 再次感謝。 – user3325414