Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法在多个标记上附加多个信息框google maps v3_Javascript_Android_Google Maps_Cordova_Google Maps Api 3 - Fatal编程技术网

Javascript 无法在多个标记上附加多个信息框google maps v3

Javascript 无法在多个标记上附加多个信息框google maps v3,javascript,android,google-maps,cordova,google-maps-api-3,Javascript,Android,Google Maps,Cordova,Google Maps Api 3,我的phonegap应用程序中有谷歌地图。我在我的sqlite数据库中执行了一个查询,在返回的每一行中,我将它推送到我的键值对数组中。我能够根据数组的内容放置标记。我试图做的是为每个标记附加和信息框。所有标记都有自己的infowindow,但是,每个窗口的内容都是我的键值对数组中最后一个索引的数据。这是我的密码 function HotelsQuery(){ appDB.transaction(function(tx) { tx.executeSql("SELECT e.name,

我的phonegap应用程序中有谷歌地图。我在我的sqlite数据库中执行了一个查询,在返回的每一行中,我将它推送到我的键值对数组中。我能够根据数组的内容放置标记。我试图做的是为每个标记附加和信息框。所有标记都有自己的infowindow,但是,每个窗口的内容都是我的键值对数组中最后一个索引的数据。这是我的密码

function HotelsQuery(){
 appDB.transaction(function(tx) {
     tx.executeSql("SELECT e.name, e.lat, e.lng, e.tel_num, e.phone_num, e.secondary_num, e.address FROM establishment e INNER JOIN places_cat_categorize p ON e.place_id = p.places_id WHERE p.cat_id = 40",[],function(tx, res) {
      console.log("Returned rows in HotelsQuery= " + res.rows.length);

      var hotels = [];
      for (var i = 0; i < res.rows.length; i++) {
       hotels.push({"name": res.rows.item(i).name , "lat": res.rows.item(i).lat, "lng": res.rows.item(i).lng, "tel_num": res.rows.item(i).tel_num, "phone_num": res.rows.item(i).phone_num, "secondary_num": res.rows.item(i).secondary_num, "address": res.rows.item(i).address});
      }

      console.log('Hotels: ' + hotels[0].name);
      console.log(hotels.length);

      for(var x = 0; x < hotels.length ; x++){
        console.log('Hotels Name: '+hotels[x].name);
        console.log('Hotels Lat: '+hotels[x].lat);
        console.log('Hotels Lng: '+hotels[x].lng);
        console.log('Hotels tel_num: '+hotels[x].tel_num);
        console.log('Hotels phone_num: '+hotels[x].phone_num);
        console.log('Hotels secondary_num: '+hotels[x].secondary_num);
        console.log('Hotels address: '+hotels[x].address);

        var marker = new google.maps.Marker({
        position: new google.maps.LatLng (hotels[x].lat, hotels[x].lng),
        map: map
        });


        var contentString = '<div class="infobox-blue"><h1>'+hotels[x].name+'</h1><p>'+hotels[x].address+'</p><p>'+hotels[x].tel_num+'</p></div>';

        var infobox = new InfoBox({
        content: contentString,
        disableAutoPan: false,
        maxWidth: 150,
        pixelOffset: new google.maps.Size(-140, 0),
        zIndex: null,
        boxStyle: {
        background: "url('images/blue-tipbox.gif') no-repeat",
        opacity: 0.75,
        width: "280px"
        },
        closeBoxMargin: "12px 4px 2px 2px",
        closeBoxURL: "images/close.gif",
        infoBoxClearance: new google.maps.Size(1, 1)
        });
        google.maps.event.addListener(marker, 'click', function() {
          alert();
          infobox.open(map, this);
        //map.panTo(loc);
        });
    }



     });
  });
  $("#mypanel").panel( "close" );
}
在google.maps.event.addListener事件上设置您的内容,例如


必须是关闭和提升的问题,检查声明我的信息框内的侦听器不工作。我无法访问我的array.add after infobox.openmap的内容,此;var latLng=new google.maps.LatLnglati,long;panTolatlng地图;您可以使用infowindow而不是infobox。在酒店阵列中成功添加数据后添加地图逻辑。我已经完成了。你能解释一下你是怎么做的吗?首先,neet添加这个脚本文件:maps.googleapis.com/maps/api/js?sensor=true>。然后需要完成一个过程,比如从数据库中获取数据,然后您可以创建映射对象,获取数组数据以创建多个infowindow。
google.maps.event.addListener(marker, 'click', function() {
   var contentString = '<div class="infobox-blue"><h1>'+hotels[x].name+'</h1><p>'+hotels[x].address+'</p><p>'+hotels[x].tel_num+'</p></div>';
   infobox.setContent(content);
   infobox.open(map, this);       
});
var hotels = [];
function HotelsQuery() {
    appDB.transaction(function(tx) {
      tx.executeSql("SELECT e.name, e.lat, e.lng, e.tel_num, e.phone_num, e.secondary_num, e.address FROM establishment e INNER JOIN places_cat_categorize p ON e.place_id = p.places_id WHERE p.cat_id = 40", [], function(tx, res) {
        console.log("Returned rows in HotelsQuery= " + res.rows.length);

        for (var i = 0; i < res.rows.length; i++) {
            hotels.push({
                "name": res.rows.item(i).name,
                "lat": res.rows.item(i).lat,
                "lng": res.rows.item(i).lng,
                "tel_num": res.rows.item(i).tel_num,
                "phone_num": res.rows.item(i).phone_num,
                "secondary_num": res.rows.item(i).secondary_num,
                "address": res.rows.item(i).address
            });
        }
      });
    });
  getLocationSuccess() ;    
}

function getLocationSuccess() {

  var map = new google.maps.Map(document.getElementById('map_canvas'), {
    zoom: 12,
    center: new google.maps.LatLng(hotels[0].lat, hotels[0].lng),
    mapTypeId: google.maps.MapTypeId.ROADMAP 
  });

  var infowindow = new google.maps.InfoWindow();

  var marker, i;
  var bounds = new google.maps.LatLngBounds();

  var icon = {
    url: "img/map_pin.png", //url
    scaledSize: new google.maps.Size(50, 50), //scaled size
    origin: new google.maps.Point(0,0), //origin
    anchor: new google.maps.Point(0, 0) //anchor
  };

  google.maps.event.addListenerOnce(map, 'idle', function () {
     google.maps.event.trigger(map, 'resize');
     map.setCenter(new google.maps.LatLng(hotels[0].lat, hotels[0].lng));
  }); 

  for (i = 0; i < hotels.length; i++) { 

    marker = new google.maps.Marker({
      position: new google.maps.LatLng(hotels[i].lat, hotels[i].lng),     
      map: map,
      icon: icon
    });   


   google.maps.event.addListener(marker, 'click', (function(marker, i) {
    return function() {
       var contentString = '<div class="infobox-blue"><h1>'+hotels[i].name+'</h1><p>'+hotels[i].address+'</p><p>'+hotels[i].tel_num+'</p></div>';
       infowindow.setContent(contentString);
       infowindow.open(map, marker);
    }
  })(marker, i));
 }   

}