13

有没有人想通过新的Google Maps SDK for iOS实现可拖拽标记? API本身不提供它。功能请求已提交。带谷歌地图SDK的iOS可拖拽标记器

如果我能掌握GMSMarker的底层视图,我可以截获Touch事件。有人试过这个?

+0

任何解决方案?谢谢 – Mangesh 2013-04-16 10:19:42

+0

是的,两个都是正确的。请接受一个(罗伯特温德尔很酷),所以这可以越过名单:D – 2013-06-10 09:56:25

回答

0

可拖动标记尚未添加到SDK中。请file a feature request

+0

已经这么做了。请参阅:http://code.google.com/p/gmaps-api-issues/issues/ detail?id = 4975) – user1971035 2013-03-10 10:53:53

3

你好,我刚刚在iOS的新GoogleMaps SDK中实现了标记的拖放功能。 https://github.com/rweindl/google-maps-sdk-ios-drag-drop

+0

真棒。谢谢! – 2013-03-24 19:28:06

+0

它显示错误纬度,很长时间后删除一个PIN :(,请交叉检查。 – Mangesh 2013-04-16 07:19:49

+0

它完美的工作对我来说。必须在你的代码的某处...你可以开始向我们展示一些 – 2013-06-10 09:55:08

17

截至今天,你不需要使用外部类,只是让你的标记“拖动”

GMSMarker *myMarker = [[GMSMarker alloc] ...]; 
... 
[myMarker setDraggable: YES]; 
// Use some kind of data to identify each marker, marker does not have 'tag' but 'userData' that is an 'id' type 
[myMarker setUserData: markerId]; 

和实施各自的代表:我下面的链接下发布的代码GitHub上

@interface YourController: UIViewController<GMSMapViewDelegate> ... 

设置你的委托

GMSMapView *myMapView = [[GMSMapView alloc] ...]; 
... 
myMapView.delegate = self; 

然后你就可以处理每个标记事件,即:

-(void)mapView:(GMSMapView *)mapView didEndDraggingMarker:(GMSMarker *)marker{ 
    if ([marker.userData isEqualtoString:@"xMark"]) 
     NSLog(@"marker dragged to location: %f,%f", marker.position.latitude, marker.position.longitude); 
} 
+0

当你开始拖动标记时,有什么办法可以禁用MapView滚动动画吗? – orkenstein 2016-02-12 08:47:47

0

雨燕3.0

甜!我所要做的就是将这个变量添加到我的标记中。然后,当仔细选择并按住标记片刻时,您可以拖动它。

marker.isDraggable = true 

我还没有实现代表来保存我的标记数据,但这里是它的样子。

extension MapVC : GMSMapViewDelegate { 

    func mapView (_ mapView: GMSMapView, didEndDragging didEndDraggingMarker: GMSMarker) { 

     print("Drag ended!") 
     print("Update Marker data if stored somewhere.") 

    } 

} 

注:浮动和动画UP选择后有一段时间我试图取消动画画面和标记。现在我发现这是一个“特征”,因为您的手指挡住了您的手指,并且在拖动过程中它不会移动屏幕时看不清楚。 (Duh!)