首页 / 浏览问题 / 云GIS / 问题详情
如何添加多个标记
20EXP 2017年07月10日

像这样的标记怎么添加多个呢?

1个回答

new多个marker对象,设置位置,图标,大小等,再添加到你的markerlayer上面就可以了

1,603EXP 2017年07月10日
我需要添加的标记比较多,那样的话代码会显得很冗余,有没有简便一点的方法呢?

标记多的话推荐使用vector,参考范例http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/examples/examples.html#vectorEvent

用selectfeature控件可以实现点击弹窗

在vector的属性style里面设置externalGraphic也可以显示为你想要的图片。参考类参考

http://support.supermap.com.cn:8090/iserver/iClient/forJavaScript/apidoc/files/SuperMap/Feature/Vector-js.html#SuperMap.Feature.Vector.style

如果你设置的点的样式都是一样的话,可以先把style定义一个对象,然后设置属性时选择这个对象就可以了,减少代码的冗余

这个和标记图层选择事件差不多?还是没明白怎么用,能帮做个范例吗?
你现在是要添加很多个像marker一样的标记吧,你就可以在vectorlayer上面直接加很多个点,然后设置为vector对象,并且在style属性里面设置externalGraphic属性,就可以将你想要显示的图片像marker一样的显示出来了。
var style = {
fillColor:"red",
strokeColor:"yellow",
pointRadius:7,
externalGraphic:"images/marker.png"};

var point= new SuperMap.Geometry.Point(0,0);
pointFeature = new SuperMap.Feature.Vector(point);
pointFeature.style=style;
vectorlayer.addFeatures(pointFeature);

其中externalGraphic设置的是图片相对于该html的位置
下面那个设置标记样式的明白了,但是在vectorlayer上面直接加很多个点,然后设置为vector对象不懂,求教
绘制的点是个geometry对象,不能直接添加到vectorlayer上面,所以你需要将new一个vector对象,再添加到vectorlayer上面。

您说的vector和这个pointFeature不一样么?

你说的pointfeature就是实例化的一个vector对象,其实是一样的,只不过你这个对象定义为叫pointfeature
嗯嗯,那么我实例化这个对象之后,怎么往地图上添加多个呢?
可以实例化多个对象,然后添加到地图上

如果点很多的话也可以选择用数组的方式

var style = {
fillColor:"red",
strokeColor:"yellow",
pointRadius:7,
externalGraphic:"images/marker.png"};

var points = [new SuperMap.Geometry.Point(-120,54.142),
new SuperMap.Geometry.Point(-110,40),
new SuperMap.Geometry.Point(-120,25.857)]

var pointfeatures = []

for(var i=0;i<points.length;i++){

pointfeatures[i] = new SuperMap.Feature.Vector(points[i]);

pointFeature[i].style=style;}

vectorlayer.addFeatures(pointFeatures);

代码看明白了,写上去之后标记添加不出来,报错如下显示这行有问题?

已经解决啦,并且成功实现,谢谢小姐姐的耐心解答
那我想在每个标注点上添加自适应信息框该怎么做?看了类参考里没有类似的事件?
...