我注意到iOS有内置功能,可以使用谷歌地图绘制虚线折线,但我无法找到Android的等效线。想法是iOS可以设置两种颜色,一种是线的颜色,另一种是(透明)之间的空间,这将创建虚线。 iOS实现看起来像这样
- (GMSPolyline )drawDashPath:(GMSPath ) path{
GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.map = self.googleMapView;
polyline.strokeWidth = 5.0;
NSArray *styles = @[[GMSStrokeStyle solidColor:[UIColor blueColor]],[GMSStrokeStyle solidColor:[UIColor clearColor]]];
NSArray *lengths = @[@5, @5];
polyline.spans = GMSStyleSpans(polyline.path, styles, lengths, kGMSLengthRhumb);
return polyline;
}
对于Android,我已经实现了虚线,但我不得不使用计算和操作。这是我正在为Android做的事情
// calculate the difference in latitude and longitude between start and end points
double difLat = latLngDest.latitude - latLngOrig.latitude;
double difLng = latLngDest.longitude - latLngOrig.longitude;
// retrieve current zoom level
double zoom = mMap.getCameraPosition().zoom;
// come up with distance between dotted lines that adjusts according to zoom levels
double divLat = difLat / (zoom * 1.2);
double divLng = difLng / (zoom * 1.2);
LatLng tmpLatOri = latLngOrig;
// add polyline to list
for (int i = 0; i < (zoom * 1.2); i++) {
LatLng loopLatLng = tmpLatOri;
if (i > 0) {
loopLatLng = new LatLng(tmpLatOri.latitude + (divLat * 0.40f), tmpLatOri.longitude + (divLng * 0.40f));
}
polylineList.add(mMap.addPolyline(new PolylineOptions()
.add(loopLatLng)
.add(new LatLng(tmpLatOri.latitude + divLat, tmpLatOri.longitude + divLng))
.color(Utils.getColor(mContext, R.color.orange))
.width(18f)));
tmpLatOri = new LatLng(tmpLatOri.latitude + divLat, tmpLatOri.longitude + divLng);
}
这看起来不错,但我宁愿使用内置函数(如果存在)。我查看了文档,但无法找到适用于Android的任何内容。
答案 0 :(得分:2)
2017年2月,Google在Google Maps Android API v2中发布了一系列针对折线和多边形的自定义设置。特别是你现在可以创建虚线和点线折线。
查看Shapes Guide中有关新功能的信息。请参阅“折线和多边形”教程中的example。
您还可以在此处阅读相应的博文:
https://maps-apis.googleblog.com/2017/02/styling-and-custom-data-for-polylines.html
答案 1 :(得分:1)
在Android上尚不存在。