ArcGIS API for Silverlight自带Maptip,鼠标悬停触发;但对于Javascript API和Flex API中由单击事件触发的InfoWindow,许多朋友一直想要这种效果。
目前2.1版的api中给出了基于Toolkit的InfoWindow例子,如果觉得它不好用或者不满意,可以参考我这个基于ElementLayer实现的InfoWindow的例子。
世界上最好的SUV,就是自己的两条腿
ArcGIS API for Silverlight自带Maptip,鼠标悬停触发;但对于Javascript API和Flex API中由单击事件触发的InfoWindow,许多朋友一直想要这种效果。
目前2.1版的api中给出了基于Toolkit的InfoWindow例子,如果觉得它不好用或者不满意,可以参考我这个基于ElementLayer实现的InfoWindow的例子。
Pingback: ArcGIS API for Windows Phone开发实例(4):点击查看超市信息 - 菩提老王的葡萄架
你好,我想问下,怎么样固定Infowindow?
文中给出的例子已经是固定的了,不知道你需要什么样的效果?
谢谢你的回答,是这样的,我看你的程序里是先设置infoWindow的envelope,并将Infowindow的高度空出,使其在点的上面,但是我跟你那样做后,会出现一开始它是在点的上方,但是放大后,它们的距离会越来越大,我想了一下,可能是因为空出来的高度问题,也可能是我的envelope设置问题,但是我改来改去还是不行..请你帮忙一下..
有可能是你envelope设置的关系。elementlayer中,放置的元素的envelope很重要,envelope是一个点时代表该元素是标定在某一个坐标点上的,元素相对于elementlayer来说没有大小。这样不会随着地图的放大缩小而发生位置变化。如果envelope是一个矩形,则会随着地图的放大缩小而变化了。
你可以下载http://www.arcgis.com/home/item.html?id=4d5eac1e3b414f4894cefcce8696ffeb这个例子,直接运行应该就是你要的效果。
谢谢你抽空帮我解决问题,你的回答对我很有用..我刚刚又去调试了看下值,我的envelope的值跟你的是一样的,但是还是出出现偏移的情况,我的程序是这样的,我先用PictureMarkerSymbol实例化对象并将其当做图钉,然后在点击事件里获取picturemarker的坐标,然后传入Setenvelope的坐标参数,不知道着有没关系,谢谢…
如果你使用了elementlayer来承载infowindow,是完全不需要用到PictureMarkerSymbol的。在infowindow(本身是usercontrol)里可以放置任何东西。infowindow本身定位在elementlayer上。
呵呵,你可能误会我的意思了,我的pictureMarkerSymbol是用来当做图钉的,而Infowindow是点击图钉时弹出用来显示该点的信息,其实跟你的项目差不多,我也按照你的项目做了,但是最后还是出现偏移问题,谢谢你用这么多时间为我解答,感激不尽..
呵呵,不用客气。关于elementlayer中envelope定位的问题,还是看看在线的例子,应该就能搞明白的:http://help.arcgis.com/en/webapi/silverlight/samples/start.htm#ElementLayer
好,谢谢了
你好,老王,在你的帮助下我最后终于解决了那个问题,很感谢…
此外,我想问下你有没做过搜索一个地点后导航到该点的最佳视图?就是假如我想搜索“深圳”,搜索完后我想导航到该地点的最佳视图,现在正在弄这个,想了蛮久的,有点思路,但是还是走走停停…望不舍赐教..谢谢
应该是路径导航,arcgis server完全可以做,前提是你得有自己准备好的网络分析数据。具体例子可参考这里:
http://help.arcgis.com/en/webapi/silverlight/samples/start.htm#Routing
虽然你误会了我的意思,但我还是向你说声谢谢,这个问题已经解决了,谢了~
那就好:)
您好,老王大哥,你这个例子我点击进去,总是打不开,下载不了。能否发一份这个“基于ElementLayer实现的InfoWindow的例子”到我邮箱呢,非常感谢!!
我的邮箱是yanmingxing@gmail.com
你好,我下载到了,有个问题想请教您,怎么让它置于最上层显示呢,
因为这个infowindow是在elementlayer中的,所以只要把elementlayer放在嘴上面就行了。(最靠近的一个图层)
这个很好 可是有一个问题呢。。 鼠标在infowindow 范围内的事件 怎么处理 也就是鼠标在infowindow中 滚轮 左键单击 事件 只是针对infowindow中的内容。不是针对地图!有办法吗?
这样是符合逻辑的。官方的maptip或infowindow也是这样。
如果非要改变这个逻辑,可尝试在infowindow的mousemove里加一个map.getfoucus()动作
infoWindow的大小改变不了。怎么办?
你好!下面我的代码,怎么都改变不了infoWindow的大少。
function initialize(){
var myLatlng=new google.maps.LatLng(-37.397, 150.644);
var mm=new google.maps.LatLng(-36.394,160.655);
var myOptions = {
zoom: 4,
center:myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map= new google.maps.Map(document.getElementById(“map”),myOptions);
new google.maps.Marker({
position:mm,
map:map
});
var info=new google.maps.InfoWindow({
content: ‘qweeerr’,
size:google.maps.Size(210,120)
});
info.setMap(map);
}
infoWindow的属性都用过了,改变不了,API看了半天了也找不到解决方案。
大师,救命啊!!
这个文章只是提供在ElementLayer中应用的思路,关于大小调整可参考toolkit中infowindow的源码。
找不到源码,我是个菜鸟!!!求教调整googel.maps.infowindow的大小。 😡
先谢过了!!
源码在这 http://esrisilverlight.codeplex.com/SourceControl/changeset/view/79239#1327535
我想问下,如果这个再多加一个字段,就是说在infowindow中显示两个字段的值该怎么做呢?