0
这是我的自定义地图(PCL)为什么routeline不出现? xamarin形成
public class CustomMap : Map
{
public List<Position> RouteCoordinates { get; set; }
public CustomMap()
{
RouteCoordinates = new List<Position>();
}
}
这是我的看法(PCL)
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ComoChegarView : ContentPage
{
Localizacao userLocal;
public ComoChegarView(double lat, double longi)
{
userLocal = new Localizacao();
Task.Run(async() => await getUserLocal()).Wait();
Localizacao lojaLocal = new Localizacao();
lojaLocal.latitude = lat;
lojaLocal.longitude = longi;
InitializeComponent();
//route
var customMap = new CustomMap
{
IsShowingUser = true,
HeightRequest = 100,
WidthRequest = 960,
};
Content = customMap;
customMap.RouteCoordinates.Add(new Position(userLocal.latitude, userLocal.longitude));
customMap.RouteCoordinates.Add(new Position(lojaLocal.latitude, lojaLocal.longitude));
customMap.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(userLocal.latitude, userLocal.longitude), Distance.FromMiles(1.0)));
}
,这是我CustomMapRenderer(安卓)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using neoFly_Montana;
using neoFly_Montana.Droid;
using Xamarin.Forms;
using Xamarin.Forms.Maps.Android;
using Android.Gms.Maps;
using Xamarin.Forms.Maps;
using Android.Gms.Maps.Model;
[assembly: ExportRenderer(typeof(CustomMap), typeof(CustomMapRenderer))]
namespace neoFly_Montana.Droid
{
public class CustomMapRenderer : MapRenderer, IOnMapReadyCallback
{
GoogleMap map;
List<Position> routeCoordinates;
protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Map> e)
{
base.OnElementChanged(e);
if (e.OldElement != null)
{
// Unsubscribe
}
void OnMapReady(GoogleMap googleMap)
{
map = googleMap;
var polylineOptions = new PolylineOptions();
polylineOptions.InvokeColor(0x66FF0000);
foreach (var position in routeCoordinates)
{
polylineOptions.Add(new LatLng(position.Latitude, position.Longitude));
}
map.AddPolyline(polylineOptions);
}
if (e.NewElement != null)
{
var formsMap = (CustomMap)e.NewElement;
routeCoordinates = formsMap.RouteCoordinates;
((MapView)Control).GetMapAsync(this);
}
}
}
}
的OnMapReady没有被调用,我不知道为什么。 我正在使用xamarin.forms 地图起作用,只有线不起作用 它会画出一条沿着街道正确转向的线条,还是我需要设置应该转向的点? 我真的需要你的回答
请帮帮我!
关键是正确的,因为地图运行完美,但现在我会尝试它,你说我。非常感谢你! –
你确定,它并没有出现,因为那是在另一个里面的方法。现在它画出了路径......你知道是否有办法做到这一点自动变成街道?或者我需要始终逐点设置它?因为现在它绘制了一条不尊重街道画的直线。 谢谢 –
@JoycedeLanna,自动改变街道,在你的PCL创建这个自定义地图的新实例时,约束'MapType'例如:'var customMap = new CustomMap {IsShowingUser = true,MapType = MapType.Street ,. ......}' –