是否可以使用OpenLayers将较大图像的一部分用作标记?如何在OpenLayers中使用较大图像的一部分作为标记?
像这样(在谷歌地图):
var icon = new google.maps.MarkerImage(
"img/marker_sprite.png",
new google.maps.Size(26, 44),
new google.maps.Point(0, 44)
);
是否可以使用OpenLayers将较大图像的一部分用作标记?如何在OpenLayers中使用较大图像的一部分作为标记?
像这样(在谷歌地图):
var icon = new google.maps.MarkerImage(
"img/marker_sprite.png",
new google.maps.Size(26, 44),
new google.maps.Point(0, 44)
);
的基本配方中的OpenLayers添加标记到地图添加标记层到地图中,你可以做这样开始:
var markers = new OpenLayers.Layer.Markers("Markers");
map.addLayer(markers);
然后,你将需要标记添加到该层,它是这样的:
var position = new OpenLayers.LonLat(longitude, latitude);
position.transform(new OpenLayers.Projection("EPSG:4326",
map.getProjectionObject());
var icon = new OpenLayers.Icon("img/marker_sprite.png",
new OpenLayers.Size(26, 44));
var marker = new OpenLayers.Marker(position, icon);
markers.addMarker(marker);
不幸的是,据我所知,这是不可能的,因此在图像文件中设置标记的原点,以便可以使用部分图像。那么你可以,但只有当你想要的部分在角落,这不是很有帮助。
crow :-( 我发现了这样的例子: “...图标用作标记的可视表示。创建这样的表示最多需要三个部分:图标URL,大小和偏移量。图标URL是用作图标的图像指针,大小是图像的大小,作为OpenLayers.Size对象,偏移量是顶部的位置“ 它只有偏移量=( 它不能定位背景,问题在于,它是一个IMG-Tag。图像左上角以像素为单位,相对于标记的经度和纬度。 – Chugworth
我不知道你在说什么,我很害怕... – TomH
new OpenLayers.Icon(img,size,pix el) 第三个参数没有将sprite-graphic放在后台。它将标记放置在相对于坐标的地图上。 – Chugworth
那么你需要先告诉我们你用什么库来显示OpenStreetMap图块。您显示OpenStreetMap的事实在很大程度上是不相关的,重要的是您正在使用的库/工具包。 – TomH
Sry,当然!我忘了。我很快就使用了OpenLayers – Chugworth