gpt4 book ai didi

ios - 按位置从 mySQL 数据库中获取地点名称(基于用户位置的接近度)

转载 作者:行者123 更新时间:2023-11-29 03:27:18 26 4
gpt4 key购买 nike

我有一个tableViewController显示按名称排序的地点列表!该列表是使用查询从我的 MySQL 数据库中检索的

SELECT Name FROM Places ORDER BY Name.

但是我的goal is to sort them by location according to userLocation 。因此,数据库中的任何地点都有“纬度”和“经度”字段。 How do I order them by latitude and longitude based on the userLocation?

SELECT Name FROM Places ORDER BY ???.

显然每个地方的纬度和经度已经插入到数据库中。我将用户位置作为字符串中的参数提供(并且我已经保存在 plist 中):

[NSString stringWithFormat: @ "SELECT Name FROM ORDER BY Places% @,% @", _myLatitude, _myLongitude "];

请帮助我!

最佳答案

首先,我建议您使用DTO。像这样的事情:

@interface Place : NSObject
@property(nonatomic, strong) NSString * name;
@property(nonatomic, strong) CLLocationCoordinate2D * coord;
@end

然后使用 DAO 获取 NSArray 中的所有位置,就像安娜·卡列尼娜建议的那样。

@interface PlaceDAO : NSObject
- (NSArray *) places;
- (id) sharedInstance;
@end

最后你可以用它来排序:

1。创建 CLLocation 类别来计算最接近引用坐标的坐标。

//CLLocation+DistanceComparison.h
static CLLocation * referenceLocation;
@interface CLLocation (DistanceComparison)
- (NSComparisonResult) compareToLocation:(CLLocation *)other;
@end

//CLLocation+DistanceComparison.m
@implementation CLLocation (DistanceComparison)
- (NSComparisonResult) compareToLocation:(CLLocation *)other {
CLLocationDistance thisDistance = [self distanceFromLocation:referenceLocation];
CLLocationDistance thatDistance = [other distanceFromLocation:referenceLocation];
if (thisDistance < thatDistance) { return NSOrderedAscending; }
if (thisDistance > thatDistance) { return NSOrderedDescending; }
return NSOrderedSame;
}
@end

2。向您的 Place DAO 添加比较方法。

- (NSComparisonResult)compare:(Place *)otherObject {
return [self.coord compareToLocation:otherObject.coord];
}

3。最后像这样对数组进行排序。

NSArray * places = [[PlacesDAO sharedInstance] places];
referenceLocation = userLocation;
NSArray * mySortedPlaces = [places sortedArrayUsingSelector:@selector(compare:)];
referenceLocation = nil;

不要忘记添加包含类别。

关于ios - 按位置从 mySQL 数据库中获取地点名称(基于用户位置的接近度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20300407/

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