我使用与MapBox官方示例相同的拖放方式: https://www.mapbox.com/ios-sdk/maps/examples/draggable-views/
我找不到在拖放后获取所拖动注释的经度/纬度的方法。 没有代表。在MGLMapViewDelegate中或任何其他委托中都没有。
MGLAnnotationView具有一些不符合经度/长期要求的dragState成员。 https://www.mapbox.com/ios-sdk/api/4.6.0/Classes/MGLAnnotationView.html
当我使用initWithAnnotation:reuseIdentifier:而不是initWithReuseIdentifier时:MGLAnnotationView的注解属性设置正确。但是注解。坐标不会更新。
那么下降后如何获得经度/纬度?
答案 0 :(得分:0)
如果我对您的理解正确,那么这就像在拖动完成后检查与注解视图关联的注解一样简单。
您是否在可拖动的MGLAnnotationView子类中尝试了类似以下的内容?
let newLatitude = self.annotation?.coordinate.latitude
let newLongitude = self.annotation?.coordinate.longitude
-允许进行常规的可选检查等。我在endDragging()
方法中包含这些行。
答案 1 :(得分:0)
相关注释的坐标仅在结束时才更新,而不是在拖动过程中。
case MGLAnnotationViewDragStateDragging:
NSLog(@"%@ / %@", @(self.annotation.coordinate.latitude), @(self.annotation.coordinate.longitude));
break;
case MGLAnnotationViewDragStateEnding:
case MGLAnnotationViewDragStateCanceling:
NSLog(@"endDragging: %@ / %@", @(self.annotation.coordinate.latitude), @(self.annotation.coordinate.longitude));
[self endDragging];
break;
结果:
2018-11-17 10:15:22.122488+0100 FreeFlightAtlas AdHoc[4780:1555191] -34.613152 / -58.377232
2018-11-17 10:15:22.145187+0100 FreeFlightAtlas AdHoc[4780:1555191] -34.613152 / -58.377232
2018-11-17 10:15:22.169465+0100 FreeFlightAtlas AdHoc[4780:1555191] -34.613152 / -58.377232
2018-11-17 10:15:22.193490+0100 FreeFlightAtlas AdHoc[4780:1555191] -34.613152 / -58.377232
2018-11-17 10:15:22.485666+0100 FreeFlightAtlas AdHoc[4780:1555191] endDragging: 25.12811184395072 / -41.88967123348579