0

最短距離を見つけるために 2 つの緯度を互いに減算したいのですが、このエラーが発生します。 + 別のエラーが表示されます。

NSNumber *userLatitude = [NSNumber numberWithDouble:43.55];//sample

NSArray *listOfCities = [managedObjectContext executeFetchRequest:request error:&error];
    for (CityList *item in listOfCities){
        NSLog(@"latitude is %@",item.latitude);  
        NSNumber *distanceLat =  userLatitude - item.latitude;

次に、それらを経度とともに可変配列に挿入し、距離を比較します。CLLocationを使用した1つの可能な解決策は

double distance = [usersCurrentLoc distanceFromLocation:otherLoc];

ここで、usersCurrentLoc と otherLoc は両方とも CLLocation 変数です。また、緯度と経度を個別に使用して、カスタム プロットを実行できるようにしたいと考えています。これらは個別に保存されているため、正しいデータ型と最も効率的なソリューションを見つけたいと考えています。

item.latitude は、データ モデル タイプが double の core-data から取得され、X コードは NSNumber * latitude のプロパティを持つ CityList クラスを自動生成しました。

4

3 に答える 3

0

これ:

NSNumber *distanceLat =  userLatitude - item.latitude;

する必要があります:

NSNumber *distanceLat = @([userLatitude doubleValue] - item.latitude);

も である場合item.latitudeは、NSNumberそれも呼び出す必要がありdoubleValueます。

NSNumberはオブジェクトです。オブジェクトに対して計算を行うことはできません。doubleValueその値を取得するために使用する必要があり、その結果を新しいNSNumberインスタンスにラップする必要があります。

ところで-なぜNSNumberここで気にするのですか?しない理由:

double userLatitude = 43.55;

double distanceLat = userLatitude - item.latitude;
于 2013-11-14T05:10:49.557 に答える
0
    CLLocationCoordinate2D newCoordinate = [newLocation coordinate];
    CLLocationCoordinate2D oldCoordinate = [oldLocation coordinate];

CLLocationDistance メートル = [newLocation distanceFromLocation:oldLocation];

上記のものは、2つの場所間の距離を見つけるために使用できます

于 2013-11-14T06:27:54.443 に答える