Xamarin.Android.Maps.Utils
Xamarin.Android.Maps.Utils copied to clipboard
netstandard 2 support
~~Hi,~~
~~are you planning support netstandard?~~
~~I've a Xamarin Forms 2.5 app and i need add a kml layer to a map~~
~~Regards~~
Sorry, I'm not sure what I was thinking.... i'll try with a custom map renderer in XF
hello @ndesorden did you solve problem i need use pins with text can you help me ?
[assembly: ExportRenderer(typeof(CustomMap), typeof(CustomMapRenderer))]
namespace AgendaApp.Droid.Renderers
{
public class CustomMapRenderer : MapRenderer
{
private bool _isDrawn;
public CustomMapRenderer() : base(Android.App.Application.Context) { }
protected override void OnElementChanged(ElementChangedEventArgs<Map> e)
{
base.OnElementChanged(e);
if (e.NewElement == null)
return;
Control.GetMapAsync(this);
}
protected override void OnMapReady(GoogleMap map)
{
base.OnMapReady(map);
if (_isDrawn)
return;
var customMap = Element as CustomMap;
var pin = customMap?.Pins.FirstOrDefault();
if (pin == null)
return;
var markerOptions = CreateMarker(pin);
var marker = map.AddMarker(markerOptions);
marker.ShowInfoWindow();
_isDrawn = true;
}
}
}
<StackLayout Padding="0">
<extensions:CustomMap VerticalOptions="FillAndExpand"
x:Name="MyMap"
IsShowingUser="true"
MapType="Street" />
</StackLayout>
namespace AgendaApp.Extensions
{
public class CustomMap : Map {}
}
var map = MyMap;
var position = new Position(_location.Latitude.Value, _location.Longitude.Value);
var latlongdegrees = 360 / (Math.Pow(2, ZoomLevel));
map.MoveToRegion(new MapSpan(position, latlongdegrees, latlongdegrees));
var pin = new Pin
{
Type = PinType.Place,
Position = position,
Label = _location.Title,
Address = _location.Address
};
map.Pins.Add(pin);