Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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 未捕获类型错误:对象#<;元素>;没有方法';getPosition';_Javascript_Google Maps Api 3 - Fatal编程技术网

Javascript 未捕获类型错误:对象#<;元素>;没有方法';getPosition';

Javascript 未捕获类型错误:对象#<;元素>;没有方法';getPosition';,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我试图在地图中显示可见标记,但无法使此代码正常工作。在控制台中,它像我期望的那样显示标记信息 <marker name="Jolly rogers", address="1850 Scales Bend Rd" lat="41.7609" lng="-91.6574" distance="217.212"></marker> 但我得到了一个错误: 未捕获类型错误:对象没有方法“getPosition” 我怎么了 function showVisibleMarker

我试图在地图中显示可见标记,但无法使此代码正常工作。在控制台中,它像我期望的那样显示标记信息

<marker name="Jolly rogers", address="1850 Scales Bend Rd" lat="41.7609" lng="-91.6574" distance="217.212"></marker>

但我得到了一个错误:

未捕获类型错误:对象没有方法“getPosition”

我怎么了

 function showVisibleMarkers() {
    for (var i = 0; i < markers.length; i++) {
      console.log(markers[i]);
      if (map.getBounds().contains(markers[i].getPosition())) {
        // code to display markers
      }
    }
  }
函数showVisibleMarkers(){
对于(var i=0;i
下面是创建地图的代码

function displaymap(lat, lng, state, min, max) {

    map = new google.maps.Map(document.getElementById("mapdiv"), {
      center: new google.maps.LatLng(lat, lng),
      zoom: 7,
      mapTypeId: 'roadmap',
      panControl: true,
      zoomControl: true,
      streetViewControl: true,
      mapTypeControl: true
    });

    var infoWindow = new google.maps.InfoWindow;
    // Change this depending on the name of your PHP file
    downloadUrl("/inc/db_query.php?lat=" + lat + "&lng=" + lng + "&state=" + state + "&min=" + min + "&max=" + max, function(data) {
      var xml = data.responseXML;
      var bounds = new google.maps.LatLngBounds();
      markers = xml.documentElement.getElementsByTagName("marker");
      for (var i = 0; i < markers.length; i++) {
        var name = markers[i].getAttribute("name");
        var address = markers[i].getAttribute("address");
        if (markers[i].getAttribute("daily") === '') {
          var icon = '/img/blackdot.png';
        } else if (markers[i].getAttribute("daily") === 0) {
          var icon = '/img/greendot.png';
        } else if (markers[i].getAttribute("daily") > 0 && markers[i].getAttribute("daily") < 10) {
          var icon = '/img/bluedot.png';
        } else if (markers[i].getAttribute("daily") > 9 && markers[i].getAttribute("daily") < 20) {
          var icon = '/img/purpledot.png';
        } else if (markers[i].getAttribute("daily") > 19 && markers[i].getAttribute("daily") < 30) {
          var icon = '/img/reddot.png';
        } else if (markers[i].getAttribute("daily") > 29 && markers[i].getAttribute("daily") < 40) {
          var icon = '/img/orangedot.png';
        } else if (markers[i].getAttribute("daily") > 39 && markers[i].getAttribute("daily") < 50) {
          var icon = '/img/yellowdot.png';
        } else if (markers[i].getAttribute("daily") > 49) {
          var icon = '/img/whitedot.png';
        }
        var position = new google.maps.LatLng(
                parseFloat(markers[i].getAttribute("lat")),
                parseFloat(markers[i].getAttribute("lng")));
        var html = "<b>" + name + "</b> <br/>" + address;
        var marker = new google.maps.Marker({
          map: map,
          position: position,
          icon: icon
        });
        bindInfoWindow(marker, map, infoWindow, html);
        bounds.extend(position);
        map.fitBounds(bounds);
      }
    });
    google.maps.event.addListener(map, 'idle', function() {
      showVisibleMarkers();
    });
  }
功能显示图(纬度、液化天然气、状态、最小值、最大值){
map=new google.maps.map(document.getElementById(“mapdiv”){
中心:新google.maps.LatLng(lat,lng),
缩放:7,
mapTypeId:“路线图”,
泛控制:对,
动物控制:对,
街景控制:对,
mapTypeControl:true
});
var infoWindow=new google.maps.infoWindow;
//根据PHP文件的名称更改此选项
下载URL(“/inc/db_query.php?lat=“+lat+”&lng=“+lng+”&state=“+state+”&min=“+min+”&max=“+max,函数(数据){
var xml=data.responseXML;
var bounds=new google.maps.LatLngBounds();
markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i0&&markers[i].getAttribute(“daily”)<10){
var icon='/img/bluedot.png';
}else if(markers[i].getAttribute(“daily”)>9&&markers[i].getAttribute(“daily”)<20){
var icon='/img/purpledot.png';
}else if(markers[i].getAttribute(“daily”)>19&&markers[i].getAttribute(“daily”)<30){
var icon='/img/reddot.png';
}else if(markers[i].getAttribute(“daily”)>29&&markers[i].getAttribute(“daily”)<40){
var icon='/img/orangedot.png';
}else if(markers[i].getAttribute(“daily”)>39&&markers[i].getAttribute(“daily”)<50){
var icon='/img/yellowdot.png';
}else if(标记[i].getAttribute(“每日”)>49){
var icon='/img/whitedot.png';
}
var position=new google.maps.LatLng(
parseFloat(标记[i].getAttribute(“lat”),
parseFloat(markers[i].getAttribute(“lng”));
var html=“”+名称+”
“+地址; var marker=new google.maps.marker({ 地图:地图, 职位:职位,, 图标:图标 }); bindInfoWindow(标记、地图、infoWindow、html); 扩展(位置); 映射边界(bounds); } }); google.maps.event.addListener(映射'idle',函数(){ showVisibleMarkers(); }); }
您不保留对google.maps.Marker对象的引用。markers数组中的XML“marker”元素没有getPosition方法(google.maps.marker对象有)

var gmarkers=[];//在全球范围内
函数showVisibleMarkers(){
对于(变量i=0;i0&&markers[i].getAttribute(“daily”)<10){
var icon='/img/bluedot.png';
}else if(markers[i].getAttribute(“daily”)>9&&markers[i].getAttribute(“daily”)<20){
var icon='/img/purpledot.png';
}else if(markers[i].getAttribute(“daily”)>19&&markers[i].getAttribute(“daily”)<30){
var icon='/img/reddot.png';
}else if(markers[i].getAttribute(“daily”)>29&&markers[i].getAttribute(“daily”)<40){
var icon='/img/orangedot.png';
}else if(markers[i].getAttribute(“daily”)>39&&markers[i].getAttribute(“daily”)<50){
var icon='/img/yellowdot.png';
}else if(标记[i].getAttribute(“每日”)>49){
var icon='/img/whitedot.png';
}
var position=new google.maps.LatLng(
parseFloat(标记[i].getAttribute(“lat”),
parseFloat(markers[i].getAttribute(“lng”));
var html=“”+名称+”
“+地址; var marker=new google.maps.marker({ 地图:地图, 职位:职位,, 图标:图标 });
gmarkers.push(marker);//从KML创建google.maps.marker对象的代码是什么样子的?那么
var gmarkers = []; // in the global scope

function showVisibleMarkers() {
   for (var i = 0; i < gmarkers.length; i++) {
     // console.log(markers[i]);
     if (map.getBounds().contains(gmarkers[i].getPosition())) {
       // code to display markers
     }
   }
}

function displaymap(lat, lng, state, min, max) {
    map = new google.maps.Map(document.getElementById("mapdiv"), {
      center: new google.maps.LatLng(lat, lng),
      zoom: 7,
      mapTypeId: 'roadmap',
      panControl: true,
      zoomControl: true,
      streetViewControl: true,
      mapTypeControl: true
    });

    var infoWindow = new google.maps.InfoWindow;
    // Change this depending on the name of your PHP file
    downloadUrl("/inc/db_query.php?lat=" + lat + "&lng=" + lng + "&state=" + state + "&min=" + min + "&max=" + max, function(data) {
      var xml = data.responseXML;
      var bounds = new google.maps.LatLngBounds();
      markers = xml.documentElement.getElementsByTagName("marker");
      for (var i = 0; i < markers.length; i++) {
        var name = markers[i].getAttribute("name");
        var address = markers[i].getAttribute("address");
        if (markers[i].getAttribute("daily") === '') {
          var icon = '/img/blackdot.png';
        } else if (markers[i].getAttribute("daily") === 0) {
          var icon = '/img/greendot.png';
        } else if (markers[i].getAttribute("daily") > 0 && markers[i].getAttribute("daily") < 10) {
          var icon = '/img/bluedot.png';
        } else if (markers[i].getAttribute("daily") > 9 && markers[i].getAttribute("daily") < 20) {
          var icon = '/img/purpledot.png';
        } else if (markers[i].getAttribute("daily") > 19 && markers[i].getAttribute("daily") < 30) {
          var icon = '/img/reddot.png';
        } else if (markers[i].getAttribute("daily") > 29 && markers[i].getAttribute("daily") < 40) {
          var icon = '/img/orangedot.png';
        } else if (markers[i].getAttribute("daily") > 39 && markers[i].getAttribute("daily") < 50) {
          var icon = '/img/yellowdot.png';
        } else if (markers[i].getAttribute("daily") > 49) {
          var icon = '/img/whitedot.png';
        }
        var position = new google.maps.LatLng(
                parseFloat(markers[i].getAttribute("lat")),
                parseFloat(markers[i].getAttribute("lng")));
        var html = "<b>" + name + "</b> <br/>" + address;
        var marker = new google.maps.Marker({
          map: map,
          position: position,
          icon: icon
        });
        gmarkers.push(marker); // <---------------------------- add this line.
        bindInfoWindow(marker, map, infoWindow, html);
        bounds.extend(position);
        map.fitBounds(bounds);
      }
    });
    google.maps.event.addListener(map, 'idle', function() {
      showVisibleMarkers();
    });
  }