2011-01-14 4 views
4

Ok, einfache Frage, aber ich habe die offensichtlich einfache Antwort noch nicht gefunden! Ich habe eine Windows Phone 7 App mit Kartenintegration, mit einer Reihe von Pins auf der Karte. Der Pin ist benutzerdefiniert (nur eine Ellipse/Kreis).WP7 Bing Map Pushpin - Wie kann man den Ort des benutzerdefinierten Pin anpassen?

Leider ist die Position des benutzerdefinierten PIN-Pins aus der Geolocation "aus". Wenn Sie heranzoomen, wird es immer genauer und ist in der am meisten gezoomten Ebene am weitesten entfernt.

Ich denke, das ist ein Offset-Problem. Ich schaute auf RenderTransformOnOrigin, aber es schien mir nicht zu helfen.

Vielen Dank im Voraus, hier ist der entsprechende Code:

<phone:PhoneApplicationPage.Resources> 
    <ControlTemplate x:Key="PushpinControlTemplateBlue" TargetType="my2:Pushpin"> 
     <Grid x:Name="ContentGrid" Width="34" Height="34" RenderTransformOrigin="0.5,0.5"> 
      <StackPanel Orientation="Vertical" > 
       <Grid MinHeight="31" MinWidth="29" Margin="0"> 
        <Ellipse Fill="Blue" 
          Margin="1" 
          HorizontalAlignment="Center" 
          VerticalAlignment="Center" 
          Width="20" 
          Height="20" 
          Stroke="White" 
          StrokeThickness="3" /> 
        <ContentPresenter HorizontalAlignment="Center" 
           Content="{TemplateBinding Content}" 
           ContentTemplate="{TemplateBinding ContentTemplate}" 
           Margin="4"/> 
       </Grid> 
      </StackPanel> 
     </Grid> 
    </ControlTemplate> 
</phone:PhoneApplicationPage.Resources> 


    <my1:Map Canvas.Left="16" Canvas.Top="13" CopyrightVisibility="Collapsed" CredentialsProvider="AtqOU-L_liZekzqR0mEG7dGDwswKnnXSoSmsVs6eGtAe7S9NZDiAtpAd1vgPfhxD" Height="521" LogoVisibility="Collapsed" Name="mapMain" ScaleVisibility="Collapsed" VerticalContentAlignment="Top" Visibility="Visible" Width="446" ZoomBarVisibility="Collapsed" BorderThickness="1" Background="Tomato"> 
     <my2:Pushpin Name="pin1" 
       Location="51.461326390697344, -0.9261151403188705" 
       Content="" 
       Template="{StaticResource PushpinControlTemplateBlue}" /> 
    </my1:Map> 

Antwort

8

A die PushPin Klasse hat eine PositionOrigin Eigenschaft, die die Lage Punkt zeigt an, wo relativ die visuelle Darstellung des Stiftes ist.

Der Standard-Stil verwendet "BottomLeft", da er aufgrund seiner Form einen Tick zu einem Punkt an seiner linken unteren Extremität führt.

Allerdings verwenden Sie einen Kreis, daher müssten Sie die PositionOrigin in die Mitte verschieben. Ich würde auch empfehlen, dass Sie einen Stil verwenden, anstatt einfach eine Vorlage zu „Stil“ Ihr Push-Pin: -

<ControlTemplate x:Key="PushpinControlTemplate" TargetType="my2:Pushpin"> 
     <Grid x:Name="ContentGrid" Width="34" Height="34" RenderTransformOrigin="0.5,0.5"> 
      <StackPanel Orientation="Vertical" > 
       <Grid MinHeight="31" MinWidth="29" Margin="0"> 
        <Ellipse Fill="{TemplateBinding Background}" 
          Margin="1" 
          HorizontalAlignment="Center" 
          VerticalAlignment="Center" 
          Width="20" 
          Height="20" 
          Stroke="{TemplateBinding Foreground}" 
          StrokeThickness="3" /> 
        <ContentPresenter HorizontalAlignment="Center" 
           Content="{TemplateBinding Content}" 
           ContentTemplate="{TemplateBinding ContentTemplate}" 
           Margin="4"/> 
       </Grid> 
      </StackPanel> 
     </Grid> 
    </ControlTemplate> 

<Style TargetType="my2:Pushpin" x:Key="PushpinControlTemplateBlue"> 
    <Setter Property="Template" Value="{StaticResource PushpinControlTemplate}" /> 
    <Setter Property="PositionOrigin" Value="Center" /> 
    <Setter Property="Background" Value="Blue" /> 
    <Setter Property="Foreground" Value="White" /> 
    <Setter Property="FontSize" Value="18" /> 
</Style> 

Jetzt XAML wird: -

<my2:Pushpin Name="pin1" 
      Location="51.461326390697344, -0.9261151403188705" 
      Content="" 
      Style="{StaticResource PushpinControlTemplateBlue}" /> 
+0

Ok, das eine äußerst beeindruckende Antwort . Danke und gut gemacht. – pearcewg

Verwandte Themen