在System.NullReferenceException

时间:2019-02-28 00:52:56

标签: c# google-maps xamarin xamarin.forms

我正在尝试使用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方法。我很确定我也看到了其他一些将它们放在其中的代码,并且希望该位置没有问题并且不会引起此问题。

0 个答案:

没有答案