显示用户在折线中点击的标记

时间:2016-09-30 09:31:52

标签: ios swift google-maps-sdk-ios

我正在Google地图中绘制Polyline。当用户点击该行时。标记将显示和infowindow。但不是用户完全点击它的地方。

我如何知道用户在线上点击的坐标(lat,long)?

我认为以下函数被`didTap overlay'覆盖了。方法

 func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) {
}

谢谢!

2 个答案:

答案 0 :(得分:2)

首先,我想说你必须创建多线自适应:

Serializer

然后使用:

GMSPolyline *poly = [GMSPolyline polylineWithPath:path];
poly.strokeColor = [UIColor purpleColor];

poly.tappable = TRUE;  // this is important

poly.map = self.googleMapView;
poly.title = routestring;

如果使用swift,请使用此方法:

-(void)mapView:(GMSMapView *)mapView didTapOverlay:(GMSOverlay *)overlay{

NSString *path = overlay.title;
NSArray *pathparts = [path pathComponents];
NSString *lat = [pathparts objectAtIndex:0]; //get lat
NSString *lng = [pathparts objectAtIndex:1]; // get lng
NSString *lnkID = [pathparts objectAtIndex:2];

// Create a marker and plot on Map

GMSMarker *mk = [GMSMarker arkerWithPosition:CLLocationCoordinate2DMake([lat doubleValue],[lng doubleValue])];
mk.title = overlay.title;
mk.snippet = @"ROUTE DATA";
mk.map = self.googleMapView;

//This will popup a marker window
[self.googleMapView setSelectedMarker:mk];
}

答案 1 :(得分:0)

以下是转换为swift兄弟的代码。

func mapView(_ mapView: GMSMapView, didTap overlay: GMSOverlay) {
    var path = overlay.title
    var pathparts = path.pathComponents()
    var lat = pathparts[0]
    var lng = pathparts[1]
    var lnkID = pathparts[2]
    var mk = GMSMarker.arker(withPosition: CLLocationCoordinate2DMake(lat.doubleValue, lng.doubleValue))
    mk.title = overlay.title
    mk.snippet = "ROUTE DATA"
    mk.map = self.googleMapView
    self.googleMapView.selectedMarker = mk
}