我正在尝试使用Google Maps Directions API显示从一个点到另一点的路线。我目前正在遵循此堆栈文章作为指导:
https://stackoverflow.com/a/47189382/8065149
到目前为止,我已经能够确定我实际上是在调用API,并且作为回报,我收到了一个相对较大的JSON文件。我还收到了很多LatLngPoints
(超过1000个)。您可以在下面查看我正在使用的代码。我使用了与上面发布的答案相同的FnDecodePolylinePoints
方法。
public void DrawRoute()
{
var lat1 = "42.02332";
var long1 = "-93.66791";
var lat2 = "42.020454";
var long2 = "-93.60969";
var url = "https://maps.googleapis.com/maps/api/directions/json?" +
"origin=" + lat1 + "," + long1 +
"&destination=" + lat2 + "," + long2 +
"&key=" + "mykey";
var json = "";
using (WebClient wc = new WebClient())
{
json = wc.DownloadString(url);
}
var lstDecodedPoints = FnDecodePolylinePoints(json);
var latLngPoints = new LatLng[lstDecodedPoints.Count];
int index = 0;
foreach (Android.Locations.Location loc in lstDecodedPoints)
{
latLngPoints[index++] = new LatLng(loc.Latitude, loc.Longitude);
}
DependencyService.Get<IMessage>().LongAlert("size of index: " + index);
var polylineoption = new PolylineOptions();
polylineoption.InvokeColor(Android.Graphics.Color.Green);
polylineoption.Geodesic(true);
polylineoption.Add(latLngPoints);
try
{
NativeMap.AddPolyline(polylineoption);
} catch (Exception e)
{
if (e.Source != null)
Console.WriteLine("Exception source: {0}", e.Source);
throw;
}
}
但是,我不断得到Unhandled Exception:
,并且在尝试捕获的throw;
上不断突出显示。
System.NullReferenceException: Object reference not set to an instance of an object.
我不明白为什么将该对象视为null,因为我的JSON从Google Maps Directions API返回了一些内容,而我却得到了latLngPoints
的数量。 polylineoption
无法在代码尝试将它们添加到地图之前及时添加它们有问题吗?任何帮助将不胜感激。
另外,这可能很重要:我正在调用以上自定义地图渲染器的DrawRoute()
方法中发布的OnElementChanged
方法。我很确定我也看到了其他一些将它们放在其中的代码,并且希望该位置没有问题并且不会引起此问题。