2011-09-27 51 views
0

是否可以使用OpenLayers将较大图像的一部分用作标记?如何在OpenLayers中使用较大图像的一部分作为标记?

像这样(在谷歌地图):

var icon = new google.maps.MarkerImage(
"img/marker_sprite.png", 
new google.maps.Size(26, 44), 
new google.maps.Point(0, 44) 
); 
+0

那么你需要先告诉我们你用什么库来显示OpenStreetMap图块。您显示OpenStreetMap的事实在很大程度上是不相关的,重要的是您正在使用的库/工具包。 – TomH

+0

Sry,当然!我忘了。我很快就使用了OpenLayers – Chugworth

回答

1

的基本配方中的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); 

不幸的是,据我所知,这是不可能的,因此在图像文件中设置标记的原点,以便可以使用部分图像。那么你可以,但只有当你想要的部分在角落,这不是很有帮助。

+0

crow :-( 我发现了这样的例子: “...图标用作标记的可视表示。创建这样的表示最多需要三个部分:图标URL,大小和偏移量。图标URL是用作图标的图像指针,大小是图像的大小,作为OpenLayers.Size对象,偏移量是顶部的位置“ 它只有偏移量=( 它不能定位背景,问题在于,它是一个IMG-Tag。图像左上角以像素为单位,相对于标记的经度和纬度。 – Chugworth

+0

我不知道你在说什么,我很害怕... – TomH

+0

new OpenLayers.Icon(img,size,pix el) 第三个参数没有将sprite-graphic放在后台。它将标记放置在相对于坐标的地图上。 – Chugworth

相关问题