在使用地图的时候,这个CLLocationCoordinate2D进行经纬度的路径的轨迹规划的时候,很是让人头痛。从数组中提取每个model的纬度和经度,传递给CLLocationCoordinate2D,由于使用的是百度地图SDK,就希望在地图上根据每个节点画出运动轨迹。 但是,CLLocationCoordinate2D是一个结构体,必须声明的时候,给定具体的存储空间。 即,需要写成 : 可是,在实际应用的时候,根本不知道接口会传递多少点过来,这个就肯定不能写一个确数。幸亏,还是有方法的。 写成 CLLocationCoordinate2D *coors = malloc([array count] * sizeof(CLLocationCoordinate2D)); 然后,在地图中调用 BMKPolyline* polyline = [BMKPolyline polylineWithCoordinates:coors count:count]; [_mapView addOverlay:polyline]; 可以愉快的在地图上画出轨迹图了。 eg: //画线---直线 CLLocationCoordinate2D coors[2] = {0}; //点A //点B coors[0].latitude = 29.196546; coors[0].longitude = 114.208226; coors[1].latitude = 30.196546; coors[1].longitude = 120.108226; //用上面的点数对象数组来初始化一个线段对象 BMKPolyline *_polyLine = [BMKPolyline polylineWithCoordinates:coors count:2]; //将线段对象显示在地图中 [_mapView addOverlay:_polyLine]; //多边形 CLLocationCoordinate2D coor2[5]={0}; coor2[0].latitude = 41.923213; coor2[0].longitude = 112.651795; coor2[1].latitude = 41.94382; coor2[1].longitude = 116.892372; coor2[2].latitude = 40.971137; coor2[2].longitude = 114.960656; coor2[3].latitude = 40.154248; coor2[3].longitude = 114.758286; coor2[4].latitude = 41.923213; coor2[4].longitude = 112.651795; BMKPolygon *ploygon2 = [BMKPolygon polygonWithCoordinates:coor2 count:5]; [_mapView addOverlay:ploygon2]; |
|