Как добавить маркер «Вы здесь» в элемент управления Bing Maps - PullRequest
5 голосов
/ 01 августа 2011

Как добавить маркер «Вы здесь» в элемент управления Bing Maps?На телефоне это представляется в виде круга внутри квадрата, а затем есть внешний круг, представляющий точность определения местоположения.
Похоже, вы могли бы сделать это с помощью канцелярской кнопки и многоугольника, но я надеюсь, что есть более легкийлучший способ

Ответы [ 2 ]

4 голосов
/ 01 августа 2011

Вы можете использовать класс 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);    
2 голосов
/ 02 августа 2011

Вы задали два вопроса, и 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>

Желтая точка тааааак в прошлом году. Манго использует синюю точку.

...