带有适用于 iOS 的 Google Maps SDK 的可拖动标记

Posted

技术标签:

【中文标题】带有适用于 iOS 的 Google Maps SDK 的可拖动标记【英文标题】:Draggable marker with Google Maps SDK for iOS 【发布时间】:2013-02-09 08:10:12 【问题描述】:

有人知道如何使用新的 ios 版 Google Maps SDK 实现可拖动标记吗? API 还没有原生地提供它。功能请求已提交。

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

【问题讨论】:

有什么解决办法吗?谢谢 是的,两个,它们都是正确的。请接受一个(robert weindl 的很酷),这样就可以从列表中越过:D 【参考方案1】:

从今天开始,您不需要使用外部类,只需让您的标记“可拖动”

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

并实现各自的委托

@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);

【讨论】:

当您开始拖动标记时,有什么方法可以禁用 MapView 滚动动画?【参考方案2】:

您好,我刚刚在新的 iOS 版 GoogleMaps SDK 中实现了标记的拖放功能。我在 github 上的以下链接下发布了代码: https://github.com/rweindl/google-maps-sdk-ios-drag-drop

【讨论】:

它显示了错误的纬度,在放下一个大头针后很久:(,请交叉检查。 它对我来说完美无缺。必须在您的代码中的某个地方...您可以先向我们展示一些 有趣的是我无法下载 zip 文件:\ 从 2013 年 6 月的 Google Maps SDK 1.3.1 开始,Google 添加了一个手势识别器,与 Robert 的可拖动方法相混淆。 ' @All:我刚刚更新了github.com/rweindl/google-maps-sdk-ios-drag-drop 项目以绕过新的 GMSBlockingGestureRecognizer 并再次启用拖放功能。【参考方案3】:

Swift 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。现在我看到这是一个“功能”,因为你的手指挡住了,如果它在拖动过程中不移动屏幕,你就看不清楚。 (呃!)

【讨论】:

【参考方案4】:

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

【讨论】:

已经这样做了。见:http://code.google.com/p/gmaps-api-issues/issues/detail?id=4975

以上是关于带有适用于 iOS 的 Google Maps SDK 的可拖动标记的主要内容,如果未能解决你的问题,请参考以下文章

google-maps-sdk-ios - 适用于 iOS 的 Google 地图 1.4.3 的 arm 7/iphone 5 问题

在使用适用于 iOS 的 Google Maps SDK 和适用于 iOS 的 Google Places 时,我找不到在哪里可以获得 POI 结果

使用适用于 iOS 的 Google Maps SDK 优化自定义标记图像性能

适用于 iOS 的 Google Maps SDK 不断增加内存使用量

适用于 iOS 的 Google Maps SDK 要求 GoogleMaps.bundle 成为“复制捆绑资源”下目标的一部分

发布到 App Store 后,适用于 iOS 的 Google Maps SDK 崩溃