ArcGIS API for Silverlight中的InfoWindow

        ArcGIS API for Silverlight自带Maptip,鼠标悬停触发;但对于Javascript API和Flex API中由单击事件触发的InfoWindow,许多朋友一直想要这种效果。
        目前2.1版的api中给出了基于Toolkit的InfoWindow例子,如果觉得它不好用或者不满意,可以参考我这个基于ElementLayer实现的InfoWindow的例子

26 thoughts on “ArcGIS API for Silverlight中的InfoWindow”

  1. Pingback: ArcGIS API for Windows Phone开发实例(4):点击查看超市信息 - 菩提老王的葡萄架

      1. Fash_Knight

        谢谢你的回答,是这样的,我看你的程序里是先设置infoWindow的envelope,并将Infowindow的高度空出,使其在点的上面,但是我跟你那样做后,会出现一开始它是在点的上方,但是放大后,它们的距离会越来越大,我想了一下,可能是因为空出来的高度问题,也可能是我的envelope设置问题,但是我改来改去还是不行..请你帮忙一下..

        1. diligentpig

          有可能是你envelope设置的关系。elementlayer中,放置的元素的envelope很重要,envelope是一个点时代表该元素是标定在某一个坐标点上的,元素相对于elementlayer来说没有大小。这样不会随着地图的放大缩小而发生位置变化。如果envelope是一个矩形,则会随着地图的放大缩小而变化了。
          你可以下载http://www.arcgis.com/home/item.html?id=4d5eac1e3b414f4894cefcce8696ffeb这个例子,直接运行应该就是你要的效果。

        2. Fash_Knight

          谢谢你抽空帮我解决问题,你的回答对我很有用..我刚刚又去调试了看下值,我的envelope的值跟你的是一样的,但是还是出出现偏移的情况,我的程序是这样的,我先用PictureMarkerSymbol实例化对象并将其当做图钉,然后在点击事件里获取picturemarker的坐标,然后传入Setenvelope的坐标参数,不知道着有没关系,谢谢…

          1. 菩提老王 Post Author

            如果你使用了elementlayer来承载infowindow,是完全不需要用到PictureMarkerSymbol的。在infowindow(本身是usercontrol)里可以放置任何东西。infowindow本身定位在elementlayer上。

          2. Fash_Knight

            呵呵,你可能误会我的意思了,我的pictureMarkerSymbol是用来当做图钉的,而Infowindow是点击图钉时弹出用来显示该点的信息,其实跟你的项目差不多,我也按照你的项目做了,但是最后还是出现偏移问题,谢谢你用这么多时间为我解答,感激不尽..

          3. diligentpig

            呵呵,不用客气。关于elementlayer中envelope定位的问题,还是看看在线的例子,应该就能搞明白的:http://help.arcgis.com/en/webapi/silverlight/samples/start.htm#ElementLayer

  2. Fash_Knight

    你好,老王,在你的帮助下我最后终于解决了那个问题,很感谢…
    此外,我想问下你有没做过搜索一个地点后导航到该点的最佳视图?就是假如我想搜索“深圳”,搜索完后我想导航到该地点的最佳视图,现在正在弄这个,想了蛮久的,有点思路,但是还是走走停停…望不舍赐教..谢谢

  3. yanmingxing

    您好,老王大哥,你这个例子我点击进去,总是打不开,下载不了。能否发一份这个“基于ElementLayer实现的InfoWindow的例子”到我邮箱呢,非常感谢!!

  4. 十月未央

    这个很好 可是有一个问题呢。。 鼠标在infowindow 范围内的事件 怎么处理 也就是鼠标在infowindow中 滚轮 左键单击 事件 只是针对infowindow中的内容。不是针对地图!有办法吗?

  5. zhimeng_guo

    你好!下面我的代码,怎么都改变不了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看了半天了也找不到解决方案。
    大师,救命啊!!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>