OpenLayers是否包含一个函数来根据它的ID返回标记引用?这是我想要工作的代码片段(我用一个注释标记为“HERE!”):我尝试使用命令“getMarkerById(this.id)”检索标记,并且萤火虫通知我返回值未定义。然后我尝试使用其中一个标记(“41014”)的静态标识号码,但这也没有奏效。任何帮助将不胜感激!如果你知道它是ID,是否有可能得到一个标记?
$(function()
{
var map, layer;
//alert("RAN!!");
map = new OpenLayers.Map("map");
var wms = new OpenLayers.Layer.WMS(
"OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0",
{'layers':'basic'});
map.addLayer(wms);
map.setCenter(new OpenLayers.LonLat(-40, 30), 2.5);
var markers = new OpenLayers.Layer.Markers("Markers");
map.addLayer(markers);
//load and retrieve values from local XML file here
var xmlDoc=loadXMLDoc("http://whxlab3.dart.ns.ec.gc.ca/~brinka/EMETsiteV1/buoys.xml");
var z=xmlDoc.getElementsByTagName("id");
var y=xmlDoc.getElementsByTagName("lat");
var x=xmlDoc.getElementsByTagName("lng");
for(i=0; i<x.length; i++)
{
//use loaded XML file to retrieve values for marker positions
var px = x[i].childNodes[0].nodeValue;
var py = y[i].childNodes[0].nodeValue;
var pz = z[i].childNodes[0].nodeValue;
var size = new OpenLayers.Size(32, 37);
var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
var icon = new OpenLayers.Icon('stock_images/buoy.png', size, offset);
icon.setOpacity(0.85);
var lonlat = new OpenLayers.LonLat(px, py);
var marker = new OpenLayers.Marker(lonlat, icon);
marker.id=(pz);
marker.events.register("mouseover", marker, function(){
console.log("Over the marker "+this.id+" at place "+this.lonlat);
this.inflate(1.2);
this.setOpacity(1);
});
marker.events.register("mouseout", marker, function(){
console.log("Out the marker "+this.id+" at place "+this.lonlat);
this.inflate(1/1.2);
this.setOpacity(0.85);
});
marker.events.register("click", marker, function(){
console.log("Clicked "+this.id+" at place "+this.lonlat);
console.log("Z value here: ", this.id);
popup = new OpenLayers.Popup.FramedCloud("chicken", this.lonlat, new OpenLayers.Size(200, 200), ("Buoy Number: "+this.id), null, true);
map.addPopup(popup);
markers.removeMarker(getMarkerById(this.id)); //HERE!
});
markers.addMarker(marker);
}
});