各位大侠,你们好,我现在碰到一个问题,C#如何显示一张地图的普通图片,能实现放大缩小的功能,并在图片可以标注放置各种标志,点击这些产生相应的事件。请有过相关开发经验或有很好建议指教小弟一二,感激涕零。

解决方案 »

  1.   

    自己开发的话,使用silverlight。简单来说,一个地图区域就是一个Canvas,它在一个Grid之后并且被Grid剪切。这时候你要了解经纬度与x-y坐标的转换规则(这个请自己去研究)。比如说x=123344,y=282827,假设一张“瓦片”是512x512像素的,那么此时就要找出横向240、纵向552位置上的图片来下载到这个Canvas的(123344,282827)。同理,在这个Grid内所有可见的瓦片都需要下载。你可以去下载google或者百度地图瓦片,例如从1到21级别的谷歌地图瓦片。当用缩放时,就是刷新废弃这个Canvas而重新创建另外一个比例尺下的Canvas,并且重新加载瓦片。并且当用户缩放时,用户的鼠标所指的地方(经纬度坐标位置),在缩放后仍然应该显示在同一个地方(x、y坐标位置)。既然可以将经纬度与x、y坐标相互转换,那么在Canvas上相应的位置放置“标注”也就不成问题。
      

  2.   

    去用bingmap或者google地图吧,很多现成的api使用。