首次使用silverlight4 的BingMap

首先,要在引用中添加Microsoft.Maps.Mapcontrol以及Microsoft.Maps.Mapcontrol.Common这两个引用,这两个引用的DLL的下载地址:http://cn.bing.com/toolbox/blogs/maps/archive/2009/11/09/bing-maps-silverlight-control-1-0-released.aspx

在前台的xaml中的代码如下:

<UserControl x:Class="WebFdaShow.BinMap"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    xmlns:m="clr-namespace:Microsoft.Maps.MapControl;assembly=Microsoft.Maps.MapControl"

    >
   
    <Grid x:Name="LayoutRoot" Background="White">
       
        <m:Map x:Name="myMap" CredentialsProvider="Your Bing Maps Key" ></m:Map>

    </Grid>
</UserControl>

其实这样地图也就出来了

如果你想看的是中文的话

在想应的CS文件上

public MainPage()
        {
            InitializeComponent();
            UriBuilder tileSourceUri = new UriBuilder("http://r2.tiles.ditu.live.com/tiles/r{quadkey}.png?g=41");  //初始化一个Uri对象,指向中文必应地图的Tile系统
            MapTileLayer tileLayer = new MapTileLayer(); //初始化一个图层
            LocationRectTileSource tileSource = new LocationRectTileSource(                     
                                                            tileSourceUri.Uri.ToString(),
                                                            new LocationRect(new Location(60, 60), new Location(13, 140)),
                                                            new Range<double>(1, 16)); // 初始化LocationRectTileSource对象,设定显示范围及放大级别
            tileLayer.TileSources.Add(tileSource); //指定图层的TileSource
            tileLayer.Opacity = 0.9;
            myMap.Children.Add(tileLayer); //将图层叠加在地图上
        }

如希望在地图上描点的话可以加一个下面的函数

  private void ShowMarker(double lati, double longi)
        {
            MapLayer myLayer = new MapLayer();
            myMap.Children.Add(myLayer);
            Ellipse point = new Ellipse();//形状
            point.Width = 15;
            point.Height = 15;
            point.Fill = new SolidColorBrush(Colors.Orange);// 颜色
            point.Opacity = 0.65;//设置不透明度

            Location location = new Location(lati, longi);
            MapLayer.SetPosition(point, location);
            MapLayer.SetPositionOrigin(point, PositionOrigin.Center);
            myLayer.Children.Add(point);
        }

 在BingMap 上的经纬度和现实中的经纬度是一样,所以不用担心经纬度的转换

当你传入一组轨迹点的经纬度到ShowMarker函数里之后

你就可以展示出一个轨迹图

 

其实这篇 我在几天就写好了
只是一直觉得写得不好
少了点什么
因为我自己实际做的项目 是把飞机飞行中经过的轨迹点给描出来
但是我有两条轨迹
第一条轨迹:点比较多看起来就是一条直线(400多个点)
但是另一个条轨迹:它只是把飞机在飞行过程中的一些飞行点给记录下来比如引擎启动、起飞、滑出、滑入、降落、引擎关闭等总的只有将近20个点
这样两个轨迹的颜色不一样看起来实际是不错的
但是由于计划轨迹的点比较稀疏 ,看起来就感觉少了点什么
所以下一次
我想要把点少的轨迹的点按顺序亮点连起来
这样地图上看起来才能够比较清晰地对比两张图的差别

 

posted @ 2010-08-28 11:47  MK_Sun  阅读(1271)  评论(0编辑  收藏  举报