我正在开发一个 Windows Phone 7.5 应用程序,我在其中映射了许多标记。
我的代码在 OnNavigatedTo 中运行,类似于以下内容:
if (points != null && points.Any())
{
var markers = new List<GeoCoordinate>();
foreach (var point in points)
{
TextBlock textBlock = new TextBlock();
textBlock.Text = "...";
textBlock.TextWrapping = TextWrapping.Wrap;
stackPanel1.Children.Add(textBlock);
Pushpin pin = new Pushpin();
pin.Location = new GeoCoordinate(point.Latitude, point.Longitude);
markers.Add(pin.Location);
pin.Content = point.Sequence.ToString();
mapItems.Items.Add(pin);
}
//map1.ZoomLevel = 15; // Tried this as well
map1.SetView(LocationRect.CreateLocationRect(markers));
markers.Clear();
points = null;
}
不幸的是,尽管在实际控件上设置了 15 的初始缩放级别,但 SetView 缩小了超出必要的范围以适应地图中的所有图钉。但是,如果手机关闭,或者我手动将其关闭,然后重新打开,则在恢复地图后将其放大到完美的程度。
在调用 SetView 后,我是否缺少正确刷新地图缩放级别的步骤?
我已经尝试用这个答案中的代码替换我的 SetView WP7 Bing Maps Zoom level based on Push Pin collection locations,但它也没有像我预期的那样工作。
控制(Lat 和 Long 设置为实际值,这是将添加到区域标记的中心):
<my:Map Height="311" HorizontalAlignment="Left" Margin="10,10,0,0" Name="map1" VerticalAlignment="Top" Width="440" CredentialsProvider="..." ZoomLevel="15">
<my:Map.Center>
<my1:GeoCoordinate Altitude="NaN" Course="NaN" HorizontalAccuracy="NaN" Latitude="0" Longitude="0" Speed="NaN" VerticalAccuracy="NaN" />
</my:Map.Center>
<my:MapItemsControl Name="mapItems" />
</my:Map>
谢谢!