首次使用silverlight4 的BingMap
时间:2010-08-28 来源:MK_Sun
首先,要在引用中添加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函数里之后
你就可以展示出一个轨迹图