Как добавить маркер «Вы здесь» в Bing Maps Control

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


person David Hayes    schedule 01.08.2011    source источник


Ответы (2)


Вы можете использовать класс 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);    
person Tuco    schedule 01.08.2011

Вы задали два вопроса, и Туко дал вам хороший ответ на первый: как добавить канцелярскую кнопку. Вот ответ на ваш второй вопрос: как его стилизовать.

Чтобы канцелярская кнопка выглядела как желтая точка в черном ромбе с белым нимбом, необходимо определить этот стиль и применить его к канцелярской кнопке. Я мог бы также рассказать вам, как стилизовать белые числа с центром в черном круге с белым нимбом, но тогда мне пришлось бы вас убить.

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>

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

person Peter Wone    schedule 02.08.2011
comment
Спасибо, я думаю, что здесь используется точка цвета вашей темы, моя в настоящее время зеленая. - person David Hayes; 03.08.2011
comment
Зеленая точка — это бета-версия Mango 2. Сейчас у меня есть зеленая точка, но я использую синюю тему. - person Peter Wone; 05.08.2011