【问题标题】:Show marker where user tapped in polyline显示用户在折线中点击的标记
【发布时间】:2016-09-30 09:31:52
【问题描述】:

我正在 Google 地图中绘制折线。当用户点击线路时。标记将显示和信息窗口。但不是用户完全点击它的位置。

我如何知道用户在线条中点击的坐标(纬度、经度)?

我认为下面的函数被 `didTap overlay' 方法覆盖

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    首先我想说你必须创建折线抽头:

    GMSPolyline *poly = [GMSPolyline polylineWithPath:path];
    poly.strokeColor = [UIColor purpleColor];
    
    poly.tappable = TRUE;  // this is important
    
    poly.map = self.googleMapView;
    poly.title = routestring;
    

    然后使用:

    -(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];
    }
    

    如果使用 swift 使用这个方法:

    func mapView(mapView: GMSMapView!, didTapOverlay overlay: GMSOverlay!) {
    
    }
    

    【讨论】:

    • 请将代码语法转换为swift方法为:func mapView(mapView: GMSMapView!, didTapOverlay overlay: GMSOverlay!) { }
    • 你可能误解了我的问题。我需要显示用户点击的标记。
    • @JaysonTamayo 覆盖变量拥有所有信息,只需尝试一次。
    • 好吧。我明白你的意思了。我现在的问题是如何将其转换为 Swift。
    • @JaysonTamayo,很高兴看到你明白我的意思。前进。 :) n 请接受答案。
    【解决方案2】:

    这里是转换成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
    }
    

    【讨论】:

    • 您好,在 swift 3 上,我在“path.pathcomponents()”上遇到错误。你能建议我解决这个问题吗?
    • 'pathComponents' 不可用:在 URL 上使用 pathComponents。 @Himanshu Moradiya 以及​​如何获得经纬度?
    • 该答案部分复制自这里stackoverflow.com/a/27907060/9024807
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 2013-12-21
    • 1970-01-01
    相关资源
    最近更新 更多