Windows phone 7 WP7地图控制处的图钉尺寸
在尝试实现显示当前用户位置的逻辑时,我遇到了一个问题Windows phone 7 WP7地图控制处的图钉尺寸,windows-phone-7,map,pushpin,Windows Phone 7,Map,Pushpin,在尝试实现显示当前用户位置的逻辑时,我遇到了一个问题 <Maps:Pushpin Location="{Binding MyLocation}" Canvas.ZIndex="1000" PositionOrigin="Center" > <Maps:Pushpin.Template> <ControlTemplate> <Grid>
<Maps:Pushpin Location="{Binding MyLocation}" Canvas.ZIndex="1000" PositionOrigin="Center" >
<Maps:Pushpin.Template>
<ControlTemplate>
<Grid>
<Ellipse Width="{Binding MyAccuracyViewSize}" Height="{Binding MyAccuracyViewSize}"
Fill="#60008000" Stroke="Green" StrokeThickness="3"/>
<Ellipse Width="18" Height="18" Fill="#A0FF4500" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Grid>
</ControlTemplate>
</Maps:Pushpin.Template>
</Maps:Pushpin>
较大的绿色圆圈表示精确区域。其大小(以像素为单位)随缩放而变化。如果缩放级别很大,它会变得相当大(>480像素)。在这一点上,它会被屏幕分辨率裁剪。AFAIK WP7控制尺寸限制为2000x2000 px
似乎这是一种地图控制限制
有没有办法去掉这个限制来显示2000x2000像素大小的椭圆
谢谢 MapPolygon怎么样
void OnPositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e)
{
SecondsCounter = 0; //reset counter
double accuracy = e.Position.Location.HorizontalAccuracy;
if (accuracy < e.Position.Location.VerticalAccuracy)
{
accuracy = e.Position.Location.VerticalAccuracy;
}
if (PolyCircle == null)
{
PolyCircle = new MapPolygon();
PolyCircle.Opacity = 0.7;
//Set the polygon properties
PolyCircle.Fill = new SolidColorBrush(Colors.Orange);
PolyCircle.Stroke = new SolidColorBrush(Colors.Purple);
PolyCircle.StrokeThickness = 4;
map1.Children.Add(PolyCircle);
}
PolyCircle.Locations = CreateCircle(e.Position.Location, accuracy);
map1.Center = e.Position.Location;
}
public static double ToRadian(double degrees)
{
return degrees * (Math.PI / 180);
}
public static double ToDegrees(double radians)
{
return radians * (180 / Math.PI);
}
public static LocationCollection CreateCircle(GeoCoordinate center, double radius)
{
var earthRadius = 6367000; // radius in meters
var lat = ToRadian(center.Latitude); //radians
var lng = ToRadian(center.Longitude); //radians
var d = radius / earthRadius; // d = angular distance covered on earth's surface
var locations = new LocationCollection();
for (var x = 0; x <= 360; x++)
{
var brng = ToRadian(x);
var latRadians = Math.Asin(Math.Sin(lat) * Math.Cos(d) + Math.Cos(lat) * Math.Sin(d) * Math.Cos(brng));
var lngRadians = lng + Math.Atan2(Math.Sin(brng) * Math.Sin(d) * Math.Cos(lat), Math.Cos(d) - Math.Sin(lat) * Math.Sin(latRadians));
locations.Add(new GeoCoordinate(ToDegrees(latRadians), ToDegrees(lngRadians)));
}
return locations;
}
void OnPositionChanged(对象发送方,地理位置变更数据源)
{
SecondsCenter=0;//重置计数器
双精度=位置、位置、水平精度;
if(精度 对于(var x=0;x您是否需要根据当前的缩放级别值调整MyAccuracyViewSize?当然。它显示了用户可能所在的区域。我知道以米为单位的圆半径。如果我想在地图上投影它,我必须尊重缩放级别。例如,缩放==10的50个像素是5公里,而缩放==18的50个像素可能是100米。您尝试过s吗调整圆的大小而不是提供更高的像素值?