簡體   English   中英

Google Maps Places API

[英]Google Maps Places API

我是Javascript新手,但似乎無法正常運行此腳本。

設法使地理位置正常工作,但加載后沒有顯示任何地點標記。 嘗試了很多東西,你們可以幫我嗎?

    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語句之前,它會顯示:“確定->未定義”。

怎么了?

謝謝。

getCurrentPosition()被異步觸發。 這意味着未在此范圍內設置var pos變量。 這使pos未定義。 當您嘗試在var options對象中進行設置時,將引發錯誤。 這會破壞代碼,並且永遠不會觸發alert()

alert()在對象之前起作用,因為尚未發生錯誤的分配( location: pos,

該錯誤已明確顯示在控制台中,因此我建議您學習以這種方式進行調試。

這是我之前問過的一個問題,可能會對您有所幫助: 觸發回調后如何使用/存儲JSON數據?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM