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