Apple Maps中餐厅的交付半径

时间:2015-11-20 18:49:23

标签: ios geometry mapkit

我正在尝试为餐馆开发一个送货系统,但我不知道如何解决这个问题。餐厅有五个地点;其中四个处于一种状态,另一种处于不同的状态。

他们只针对每个地点进行交付,具体取决于它的距离;他们还为每个地点设置了一些限制。

我的想法是:

  • 在iOS上获取用户的位置(已完成)
  • 检查用户位置是否在任何餐厅交付半径范围内。如果是这样,请将该位置设置为商店,如果没有,只显示我们不在其所在区域内投放的消息。

我被困的地方

  • 如何在Apple Maps中定义位置1,2,3等的限制(意味着他们将向哪个区域发送)?

2 个答案:

答案 0 :(得分:1)

尝试围绕餐厅位置设置可交付半径。你甚至可以画一个MKCircle来表达。

CLLocation * _storeLocation = [[CLLocation alloc] initWithLatitude:30.270135 longitude:-97.731270];

double deliverableRadius = 3 * 1609.34; // 3 miles (or the area they will deliver to)

MKCircle * circle = [MKCircle circleWithCenterCoordinate:storeLocation.coordinate radius:deliverableRadius];
[_mapView addOverlay:circle];

确定可交付区域后,您可以查看是否查看用户位置是否在此区域内。

答案 1 :(得分:0)

所以我认为一个简单的方法可能只是检查用户是否在餐馆的某个距离内(即“如果我离餐馆不到25英里,那么他们会送给我”)。

首先将餐厅位置的地址转换为gps坐标。有关详细信息,请参阅Converting Place Names Into Coordinates

接下来,计算用户位置与每个餐厅位置之间的距离,并检查该距离是否小于最大传送距离。

可以找到计算两点之间距离的公式here