如何使用谷歌地图绘制虚线折线 - Android

时间:2016-09-08 01:20:49

标签: android google-maps google-polyline

我注意到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的任何内容。

2 个答案:

答案 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上尚不存在。