我正在尝试使用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;
}
答案 0 :(得分:0)
您的代码很好,但是折线点的坐标很糟糕:Google地图使用WGS 84网络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;
}