2011-01-14 81 views
4

好的,簡單的問題,但我還沒有找到明顯的簡單答案呢! 我有一個帶地圖集成的Windows Phone 7應用程序,在地圖上有一組圖釘。圖釘是自定義的(只是一個橢圓/圓形)。WP7必應地圖插圖 - 如何調整自定義圖釘的位置?

不幸的是,自定義圖釘的位置與地理位置「關閉」。當你放大時,它會越來越接近精確,並且在最縮小的層次上是最遠的。

我認爲這是一個抵消問題。我看着RenderTransformOnOrigin,但它似乎沒有幫助我。預先

謝謝,這裏是有關的代碼:

<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> 

回答

8

A中的PushPin類有一個PositionOrigin屬性,其指示所述位置點是相對於銷的視覺表示。

默認樣式使用「BottomLeft」,因爲它的形狀有一個滴答漏斗到左下角的一個點。

但是,您正在使用圓形,因此您需要將PositionOrigin移動到中心位置。我也建議你使用的樣式,而不是一個簡單的模板,「風格」你的圖釘: -

<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> 

現在XAML中變爲: -

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

好吧,這是一個非常令人印象深刻的答案。謝謝你,幹得好。 – pearcewg 2011-01-15 01:21:19