如何在Bing Maps Control中添加“你在这里”标记

时间:2011-08-01 15:37:06

标签: bing-maps windows-phone

如何在Bing Maps控件中添加“你在这里”标记?在电话上,这表示为正方形内的圆圈,然后有一个表示位置精度的外圆 看起来你可以用图钉和polgon做到这一点,但我希望有一个更简单/更好的方式

2 个答案:

答案 0 :(得分:4)

您可以使用GeoCoordinateWatcher类,它提供您当前的位置,然后添加一个简单的图钉。我不认为图钉是一个糟糕的选择和/或难以使用。


GeoCoordinateWatcher watcher = new GeoCoordinateWatcher();

GeoCoordinate loc = watcher.Position.Location;

if (loc.IsUnknown == true)
{
    // Cannot retrieve the GPS position
    return;
}

MyBingMap.SetView(loc, 17);

MapLayer pushPinLayer = new MapLayer();

MyBingMap.Children.Add(pushPinLayer);

Pushpin p = new Pushpin();

p.Content = "YOU ARE HERE";
p.Location = loc;

pushPinLayer.AddChild(p, loc, PositionOrigin.BottomLeft);    

答案 1 :(得分:2)

你问过两个问题,Tuco给你一个很好的答案:第一个:如何添加图钉。这是第二个问题的答案:如何设计风格。

要使图钉看起来像带有白色雨云的黑色钻石中的黄色圆点,您需要定义此样式并将其应用于图钉。我还可以告诉你如何设置以白色雨云为中心的黑色圆圈上的白色数字,但是我不得不杀了你。

xmlns:m="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps"

<Style x:Key="CurrentLocationPushpinStyle" TargetType="m:Pushpin">
  <Setter Property="BorderBrush" Value="#FFF4F4F5" />
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate>
        <Grid>
          <Rectangle Fill="Black" Height="25" Stroke="White" StrokeThickness="2" Width="25" RenderTransformOrigin="0.5,0.5">
            <Rectangle.RenderTransform>
              <CompositeTransform Rotation="45" TranslateX="-10" TranslateY="11"/>
            </Rectangle.RenderTransform>
          </Rectangle>
          <Ellipse Fill="Yellow" Height="11" Stroke="Yellow" Width="11">
            <Ellipse.RenderTransform>
              <CompositeTransform TranslateX="-10" TranslateY="11"/>
            </Ellipse.RenderTransform>
          </Ellipse>
        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

去年一个黄点是太过分了。芒果使用蓝点。