带有适用于 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 的可拖动方法相混淆。 '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 成为“复制捆绑资源”下目标的一部分