【发布时间】:2020-12-14 14:42:52
【问题描述】:
我想显示一张带有当前位置的地图,并在地图上的当前位置上画一个图钉。如果有多个位置,我也想画线。在 xamarin 表单上执行此操作的最佳选择是哪个?
【问题讨论】:
-
您是否阅读过文档 - 这已被广泛涵盖。见docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/…
标签: xamarin.forms
我想显示一张带有当前位置的地图,并在地图上的当前位置上画一个图钉。如果有多个位置,我也想画线。在 xamarin 表单上执行此操作的最佳选择是哪个?
【问题讨论】:
标签: xamarin.forms
您可以使用Xamarin.forms.Maps 来实现这些要求。
显示当前位置的地图
显示地图:
按照Xamarin.Forms Map Initialization and Configuration的步骤,就可以显示地图控件了:
<ContentPage ...
xmlns:maps="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps">
<maps:Map x:Name="map" />
</ContentPage>
您也可以display a specific location on a map 显示您的当前位置。
在地图上的当前位置上画一个大头针。
绘制图钉:
Pin pin = new Pin
{
Label = "Santa Cruz",
Address = "The city with a boardwalk",
Type = PinType.Place,
Position = new Position(36.9628066, -122.0194722)
};
map.Pins.Add(pin);
如果有多个位置,画线
绘制折线:
Polygon polygon = new Polygon
{
StrokeWidth = 8,
StrokeColor = Color.FromHex("#1BA1E2"),
FillColor = Color.FromHex("#881BA1E2"),
Geopath =
{
new Position(47.6368678, -122.137305),
new Position(47.6368894, -122.134655),
new Position(47.6359424, -122.134655),
new Position(47.6359496, -122.1325521),
new Position(47.6424124, -122.1325199),
new Position(47.642463, -122.1338932),
new Position(47.6406414, -122.1344833),
new Position(47.6384943, -122.1361248),
new Position(47.6372943, -122.1376912)
}
};
// add the polygon to the map's MapElements collection
map.MapElements.Add(polygon);
获取当前位置:
你可以使用Xamarin.Essentials: Geolocation
更新:
要布局地图:
<maps:Map x:Name="map" VerticalOptions="Start" HorizontalOptions="Start" BackgroundColor="Red" >
<maps:Map.HeightRequest>
<OnIdiom x:TypeArguments="x:Double" Phone="100" Tablet="150" Desktop="100"/>
</maps:Map.HeightRequest>
</maps:Map>
【讨论】: