Ios7 在iOS应用程序中理解GPS值列表
我有一个web服务,它与google maps API接口,在google地图上生成多边形。该服务获取GPS值并存储以供检索 问题是,当我尝试在iPhone应用程序上使用这些值时,MKPolyline要么是一团乱麻,要么是一堆锯齿形的线 有没有办法理解这些值,以便重建多边形 我当前的代码如下所示Ios7 在iOS应用程序中理解GPS值列表,ios7,xamarin.ios,gps,cllocation,Ios7,Xamarin.ios,Gps,Cllocation,我有一个web服务,它与google maps API接口,在google地图上生成多边形。该服务获取GPS值并存储以供检索 问题是,当我尝试在iPhone应用程序上使用这些值时,MKPolyline要么是一团乱麻,要么是一堆锯齿形的线 有没有办法理解这些值,以便重建多边形 我当前的代码如下所示 private void GenerateMap() { var latCoord = new List<double>(); var longCoo
private void GenerateMap()
{
var latCoord = new List<double>();
var longCoord = new List<double>();
var pad = AppDelegate.Self.db.GetPaddockFromCrop(crop);
mapMapView.MapType = MKMapType.Standard;
mapMapView.ZoomEnabled = true;
mapMapView.ScrollEnabled = false;
mapMapView.OverlayRenderer = (m, o) =>
{
if (o.GetType() == typeof(MKPolyline))
{
var p = new MKPolylineRenderer((MKPolyline)o);
p.LineWidth = 2.0f;
p.StrokeColor = UIColor.Green;
return p;
}
else
return null;
};
scMapType.ValueChanged += (s, e) =>
{
switch (scMapType.SelectedSegment)
{
case 0:
mapMapView.MapType = MKMapType.Standard;
break;
case 1:
mapMapView.MapType = MKMapType.Satellite;
break;
case 2:
mapMapView.MapType = MKMapType.Hybrid;
break;
}
};
if (pad.Boundaries != null)
{
var bounds = pad.Boundaries.OrderBy(t => t.latitude).ThenBy(t => t.longitude).ToList();
foreach (var l in bounds)
{
double lat = l.latitude;
double lon = l.longitude;
latCoord.Add(lat);
longCoord.Add(lon);
}
if (latCoord.Count != 0)
{
if (latCoord.Count > 0)
{
var coord = new List<CLLocationCoordinate2D>();
for (int i = 0; i < latCoord.Count; ++i)
{
var c = new CLLocationCoordinate2D();
c.Latitude = latCoord[i];
c.Longitude = longCoord[i];
coord.Add(c);
}
var line = MKPolyline.FromCoordinates(coord.ToArray());
mapMapView.AddOverlay(line);
mapMapView.SetVisibleMapRect(line.BoundingMapRect, true);
}
}
}
}
MKPolygon/MKPolygon渲染器提供相同种类的随机线混乱。OrderBy LINQ除了使随机线在视图上下呈之字形外没有任何区别。由于您不知道捕捉点的顺序,因此无法追踪围场周围的实际路径;这就是为什么你的多段线在地图上变成了愚蠢的散步。如果没有这些信息,你最多只能做出有根据的猜测 您可能想尝试一些可能的启发式方法: 取所有点的平均值,得到中间点的某个点,然后按纬度-中间纬度,L.经度-中点。经度排序。小心,atan2在0,0处未定义! 以捕获的点为例:对于相对较少的点,您可以使用简单的二次时间。这样做的大致效果是,通过丢弃会形成凹面的点,在地图图钉的外侧缠绕一条概念上的橡皮筋,并且还应给出剩余点的顺序。
是存储每个坐标的时间戳,还是仅存储一对坐标值?iOS渲染器按照给定的精确顺序绘制线条。您必须记住坐标的顺序,并以相同的顺序将它们赋给多边形。否则,您必须按照答案所示,尝试用最佳猜测重新构造多边形。