Javascript 附近地点谷歌地图地点API

Javascript 附近地点谷歌地图地点API,javascript,cordova,google-maps-api-3,google-places-api,intel-xdk,Javascript,Cordova,Google Maps Api 3,Google Places Api,Intel Xdk,首先,我刚开始使用JavaScript,所以我并不擅长它。我正在制作一个应用程序,使用Google Maps Places API,在这个应用程序中,你可以按一个按钮获取你的位置,按另一个按钮获取附近的位置(例如商店或酒吧)。获取设备的位置是可行的,但我的代码不会显示附近的位置。它确实去了那个地方,但没有显示附近地方的标记。我不知道出了什么问题,但我认为这可能与标记的代码或代码序列有关 我正在使用Intel XDK(HTML5+Cordova和应用程序设计器)和Google Maps Place

首先,我刚开始使用JavaScript,所以我并不擅长它。我正在制作一个应用程序,使用Google Maps Places API,在这个应用程序中,你可以按一个按钮获取你的位置,按另一个按钮获取附近的位置(例如商店或酒吧)。获取设备的位置是可行的,但我的代码不会显示附近的位置。它确实去了那个地方,但没有显示附近地方的标记。我不知道出了什么问题,但我认为这可能与标记的代码或代码序列有关

我正在使用Intel XDK(HTML5+Cordova和应用程序设计器)和Google Maps Places API。现在,当按下一个按钮(id=“myloc btn”)时,所有这些都会发生,但是(如果位置和附近的地方都工作),我想将它们分为两个按钮,一个显示位置,一个显示附近的地方

下面是我的javascript代码。我已经注释掉了我最初拥有的设备位置的标记,因为我认为它可能会妨碍附近位置的标记

有人知道怎么了或者能帮我吗

提前谢谢

---更新---

我尝试了从GoogleMaps文档()中搜索附近的地方,并设置了一个位置(我基本上复制并粘贴了代码),但这也不起作用。同样,它会转到正确的位置,但不会显示任何标记。我在模拟器和手机上都试过了,但结果都一样。我不知道为什么标记没有显示出来

var映射;
var服务;
var信息窗口;
var-pos;
var标记=[];
//var标签='abcdefghijklmnopqrstuvxyz';
//var labelIndex=0;
函数寄存器\事件\处理程序(){
$(文档)。在(“单击”上,“myloc btn”,函数(evt){
initMap();
});
函数initMap(){
map=new google.maps.map(document.getElementById('gmap'),{zoom:14});
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
pos={
纬度:位置坐标纬度,
lng:position.coords.longitude
};
//添加标记(位置、地图);
地图设置中心(pos);
},函数(){
handleLocationError(true,infoWindow,map.getCenter());
});
}否则{
//浏览器不支持地理位置
handleLocationError(false,infoWindow,map.getCenter());
}
var请求={
地点:pos,,
半径:5000,
类型:['store']
};
infowindow=new google.maps.infowindow();
var service=newgoogle.maps.places.PlacesService(地图);
服务.nearbySearch(请求、回调);
函数回调(结果、状态){
if(status==google.maps.places.PlacesServiceStatus.OK){
对于(var i=0;i
在提供给
getCurrentPosition()
的回调中,您正在设置
pos
。但是,在手机确定位置后,即在将来的某个随机点,将调用此回调。这是在您尝试在您的
请求中使用
pos
进行位置查询之后很久的事情。您需要在其自己的函数中移动places代码,然后在将地图居中后,在传递
map
pos
时调用它。几乎与您使用
addMarker()

所做的完全相同。请注意,您的问题本质上是重复的:(您正确地认为顺序就是问题所在。)谢谢!这个问题及其答案真的帮助我更好地理解了代码!
var map;
var service;
var infoWindow;
var pos;
var marker = [];
//var labels = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
//var labelIndex = 0;

function register_event_handlers() {

$(document).on("click", "#myloc-btn", function(evt) {
    initMap();
});

 function initMap() {
    map = new google.maps.Map(document.getElementById('gmap'), {zoom: 14});

    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(function(position) {
      pos = {
            lat: position.coords.latitude, 
            lng: position.coords.longitude
      };
      //addMarker(pos, map);
      map.setCenter(pos);
     }, function() {
        handleLocationError(true, infoWindow, map.getCenter());
      });
     } else {
      // Browser doesn't support Geolocation
      handleLocationError(false, infoWindow, map.getCenter());
     }

     var request = {
        location: pos,
        radius: 5000,
        type: ['store']
      };
      infowindow = new google.maps.InfoWindow();
      var service = new google.maps.places.PlacesService(map);
      service.nearbySearch(request, callback); 

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

function handleLocationError(browserHasGeolocation, infoWindow, pos) {
    infoWindow.setPosition(pos);
    infoWindow.setContent(browserHasGeolocation ?
                          'Error: The Geolocation service failed.' :
                          'Error: Your browser doesn\'t support geolocation.');
  }

 /*
 function addMarker(location, map) {
        var marker = new google.maps.Marker({
            map: map,
            // Define the place with a location, a query string and a label.
            place: {
                location: location,
                query: 'This is my location'
            },
            label: labels[labelIndex++ % labels.length],
        });

        // Construct a new InfoWindow.
        var infoWindow = new google.maps.InfoWindow({
            content: 'Here I am!'
        });

        // Opens the InfoWindow when marker is clicked.
        marker.addListener('click', function() {
            infoWindow.open(map, marker);
        }); 
 }
 */ 


 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);
        });
 }

 document.addEventListener("app.Ready", register_event_handlers, false);
 })();