如何添加一个图钉项目到地图?Windows Phone
本文关键字:地图 项目 Phone Windows 一个 何添加 添加 | 更新日期: 2023-09-27 17:49:58
我试图在我的应用程序的地图页面中绘制图钉到地图,但是当我添加代码以覆盖图钉到地图时,我得到以下错误:
类型或命名空间名称
PushPin
无法找到(您是否缺少using指令或程序集引用?)
和
Microsoft.Phone.Maps.Controls.Map
没有Children
的定义,也没有Children
的扩展方法接受Microsoft.Phone.Maps.Controls.Map
类型的第一个参数
我明白了,我错过了一个参考?我有controls.maps
和contols.toolkit
的参考,所以我不明白为什么。
这也是我用来绘制图钉的代码:
PushPin myPin = new Pushpin();
myPin.Location = MyGeoPosition;
myPin.Content = "My car";
MyMap.Children.Add(myPin);
试试这个
MapLayer layer1 = new MapLayer();
Pushpin pushpin1 = new Pushpin();
pushpin1.GeoCoordinate = MyGeoPosition;
pushpin1.Content = "My car";
MapOverlay overlay1 = new MapOverlay();
overlay1.Content = pushpin1;
overlay1.GeoCoordinate = MyGeoPosition;
layer1.Add(overlay1);
myMap.Layers.Add(layer1);
为每个图钉创建新的覆盖层,将所有覆盖层添加到一个图层,并将该图层添加到map元素。
你可以试试…
BitmapImage myImage1; myImage1 = new BitmapImage(new Uri("/Assets/Images/pushpin-google-hi.png", UriKind.RelativeOrAbsolute));
var image = new Image();
image.Width = 50;
image.Height = 50;
image.Opacity = 100;
image.Source = myImage1;
var mapOverlay = new MapOverlay();
mapOverlay.Content = image;
mapOverlay.GeoCoordinate = new GeoCoordinate(lats, lons);
var mapLayer = new MapLayer();
mapLayer.Add(mapOverlay);
MyMap.Layers.Add(mapLayer);
MyMap.SetView(new GeoCoordinate(lats, lons), 16);
试试这个。首先,我把它放在utils类中:
public MapLayer GetCurrentPosition (out MapOverlay myPositionOverlay)
{
MapLayer myPositionLayer = new MapLayer();
myPositionOverlay = new MapOverlay();
Image myPositionImage = new Image();
myPositionImage.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("/Assets/myImagePin.png", UriKind.RelativeOrAbsolute));
myPositionImage.Height = 70;
myPositionImage.Visibility = Visibility.Visible;
myPositionImage.HorizontalAlignment = HorizontalAlignment.Center;
myPositionOverlay.Content = myPositionImage;
myPositionLayer.Add(myPositionOverlay);
return myPositionLayer;
}
然后这个放到你的MapLoaded方法上:
MapLayer mypositionArrow = placePushPins.GetCurrentPosition(out myPositionOverlay);
MyMap.Layers.Add(mypositionArrow);
然后,如果你想让你的图钉不是静态的,而是根据你的位置移动,把这个添加到你的手表:
myPositionOverlay.GeoCoordinate = myCurrentPositionCoordinate;
要使图钉顺利移动,只需实现如下动画:http://blogs.bing.com/maps/2014/09/25/part-2-bring-your-maps-to-life-creating-animations-with-bing-maps-net/