代码之家  ›  专栏  ›  技术社区  ›  Victor Semeniuk

GoogleMap Xamarin上未显示多段线。安卓

  •  0
  • Victor Semeniuk  · 技术社区  · 7 年前

    我正在尝试使用Xamarin为Android构建ActivityTracker应用程序。我已经可以访问Google Maps Api,并可以获取当前设备的位置。下一步是将我得到的位置连接到多段线中,但多段线在地图上不可见。

    这是我试过的代码

    private Polyline polyline;
    public void OnMapReady(GoogleMap map)
        {
            _map = map;
            _map.MyLocationEnabled = true;
            _map.TrafficEnabled = true;
            _map.SetIndoorEnabled(true);
            PolylineOptions poly = new PolylineOptions()
                .InvokeColor(Color.Red)
                .InvokeWidth(5)
                .Visible(true)
                .InvokeZIndex(30);
            poly.Add(new LatLng(95, 50));
            poly.Add(new LatLng(90, 55));
            poly.Add(new LatLng(100, 50));
    
            polyline = _map.AddPolyline(poly);
            _map.MyLocationChange += MyLocationChanged; 
        }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Andrii Omelchenko    7 年前

    您的代码很好,但多段线点的坐标不好:使用WGS 84 Web的Google地图 Mercator projection 截断纬度为 Latmax = ±85.05113° ,所以没有坐标点 LatLng(95, 50) ( 95 -对于纬度来说太大)和 LatLng(90, 55) LatLng(100, 50) .您的坐标应来自 (-89.99,-179.99) (89.99,179.99) .尝试,例如使用 55, 60 70 而不是 95, 90 100 :

    private Polyline polyline;
    public void OnMapReady(GoogleMap map)
        {
            _map = map;
            _map.MyLocationEnabled = true;
            _map.TrafficEnabled = true;
            _map.SetIndoorEnabled(true);
            PolylineOptions poly = new PolylineOptions()
                .InvokeColor(Color.Red)
                .InvokeWidth(5)
                .Visible(true)
                .InvokeZIndex(30);
            poly.Add(new LatLng(55, 50));
            poly.Add(new LatLng(60, 55));
            poly.Add(new LatLng(70, 50));
    
            polyline = _map.AddPolyline(poly);
            _map.MyLocationChange += MyLocationChanged; 
        }