gpt4 book ai didi

ios - 显示可见 map View 边界内的 MKAnnotationViews

转载 作者:搜寻专家 更新时间:2023-10-31 08:25:51 25 4
gpt4 key购买 nike

我正在查询我的服务器,根据用户在 map View 中的可观察部分,查找距离用户最近的位置列表。

我不太确定如何执行此操作,但我是否应该发送 map View 可见区域的中心纬度和经度,然后根据最近的半径搜索结果?

我知道 MKMapView 有两个属性,分别是 regionvisibleMapRect。我应该使用其中之一吗?如果是,根据我的问题,哪一个更合适?

编辑当您搜索附近的位置时,我希望实现与苹果 map 和 Yelp 应用程序相同的功能,它会根据 map View 的可见部分向您显示相关内容。

编辑 2我见过很多人将他们的 mapview 的可见部分分成象限,最常见的是 NW、NE、SW 和 SE。但是,我仍然不完全确定他们为什么要这样做。我想知道查询后端的最佳方法,其中包含每个位置的纬度和经度,以查找 mapview 上存在的位置。

我在 stackoverflow 上到处查看,发现了一个类似的问题 here .但是,它没有回答我的问题,也没有提到 visibleMapRect 因为它已经超过 5 年了。

非常感谢任何帮助。

最佳答案

因此,您需要为服务器调用提供这 2 个坐标 bottomleft 和 topright 4 个点。

  1. 如果位置的纬度 > bottomleft.lat 并且如果位置的纬度 < topright.lat
  2. 如果 long of location > bottomleft.long 并且如果 long of location

iOS 代码看起来像这样使用这四个变量作为参数进行服务器调用

fun viewDidLoad() {
super.viewDidLoad()
self.mapView.delegate = self
}


func mapView(mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
// Using region
var span: MKCoordinateSpan = mapView.region.span
var center: CLLocationCoordinate2D = mapView.region.center

// This is the farthest Lat point to the left
var farthestLeft = center.latitude - span.latitudeDelta * 0.5
// This is the farthest Lat point to the Right
var farthestRight = center.latitude + span.latitudeDelta * 0.5
// This is the farthest Long point in the Upward direction
var farthestTop = center.longitude - span.longitudeDelta * 0.5
// This is the farthest Long point in the Downward direction
var farthestBottom = center.longitude + span.longitudeDelta * 0.5
var SWCoord = MKCoordinateForMapPoint(farthestBottom, farthestLeft)
var NECoord = MKCoordinateForMapPoint(farthestTop, farthestRight)


// Using visibleMapRect
var mapRect = mapView.visibleMapRect
// This is the top right Coordinate
var NECoord = getCoordinateFromMapRectanglePoint(MKMapRectGetMaxX(mapRect), y: mapRect.origin.y)
// This is the bottom left Coordinate
var SWCoord = getCoordinateFromMapRectanglePoint(mapRect.origin.x, y: MKMapRectGetMaxY(mapRect))
// Not needed but could be useful
// var NWCoord = getCoordinateFromMapRectanglePoint(MKMapRectGetMinX(mapRect), y: mapRect.origin.y)
// var SECoord = getCoordinateFromMapRectanglePoint(MKMapRectGetMaxX(mapRect), y: MKMapRectGetMaxY(mapRect))


}

func getCoordinateFromMapRectanglePoint(x: Double, y: Double) -> CLLocationCoordinate2D {
var mapPoint = MKMapPointMake(x, y)
return MKCoordinateForMapPoint(mapPoint)
}

如果还有什么问题可以评论

关于ios - 显示可见 map View 边界内的 MKAnnotationViews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35246441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com