0

selectedAnnotation から userLocation までの距離を見つけようとしています。注釈 NSObject に次のコードを追加しました。

-(void) setDistanceFromCurrentLocation:(CLLocation *)currentLocation{

CLLocation *location2 = [[CLLocation alloc] initWithLatitude:self.latitude longitude:self.longitude];

[self setDistance:[currentLocation distanceFromLocation:location2]];
}

- (NSString *)subtitle
{
NSString *myDistance = [NSString stringWithFormat:@"%1.1f from current location", distance];
return myDistance;
}

didUpdatedidUpdateToLocation で、この質問から次のロジックを使用してみました: https://stackoverflow.com/a/10881683/984248

まだ 0.0 を返しています。私は何を間違っていますか?

編集:

そのため、現在の場所からの距離を正しく計算しています。しかし、これをサブタイトルとしてピンに設定するにはどうすればよいですか?

これが私が距離を見つける方法です:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {

[self setCurrentLocation:newLocation];

// if not Current Location then update the currently displayed Dealer Annotation
for (int i=0; i<self.dataArray.count; i++){

    NSDictionary *dataDictionary = [self.dataArray objectAtIndex:i];
    NSArray *array = [dataDictionary objectForKey:@"Locations"];

    for (int i=0; i<array.count; i++){

        NSMutableDictionary *dictionary = [array objectAtIndex:i];

        CLLocation *pinLocation = [[CLLocation alloc] initWithLatitude:[[dictionary objectForKey:@"Latitude"] doubleValue] longitude:[[dictionary objectForKey:@"Longitude"] doubleValue]];

        [?????? setDistance:[self.currentLocation distanceFromLocation:pinLocation]];
    }
  }
}

マップにピンを追加する方法は次のとおりです。

for (int i=0; i<self.dataArray.count; i++){

    NSDictionary *dataDictionary = [self.dataArray objectAtIndex:i];
    NSArray *array = [dataDictionary objectForKey:@"Locations"];

    for (int i=0; i<array.count; i++){

        NSMutableDictionary *dictionary = [array objectAtIndex:i];

        MapAnnotation *annotation = [[MapAnnotation alloc] init];

        annotation.latitude = [[dictionary objectForKey:@"Latitude"] doubleValue];
        annotation.longitude = [[dictionary objectForKey:@"Longitude"] doubleValue];

        CLLocationCoordinate2D coord = {.latitude =
            annotation.latitude, .longitude =  annotation.longitude};
        MKCoordinateRegion region = {coord};

        annotation.title = [dictionary objectForKey:@"Name"];

        annotation.subtitle = ?????;
        annotation.coordinate = region.center;

        //Saving the dictionary of the pin to show contact info later
        annotation.sourceDictionary = dictionary;
        [mapView addAnnotation:annotation];
    }
}
4

1 に答える 1

0

currentLocation は self.latitude,self.longitude に設定されていますか?

その場合、自分からの距離を見つけようとします。currentLocation パラメーターと self.latitude および self.longitude 変数の緯度と経度の値をログに記録してみて、それらが異なることを確認してください。

そうである場合は、 [currentLocation distanceFromLocation:location2] をログに記録して、それがゼロでないかどうかを確認してください。そうである場合は、setDistance メソッドが問題です。

それ以外に考えられるのは、距離変数が別の場所で 0 に設定されているか、%1.1f でフォーマットされていない変数であるため、フォーマッタが 0.0 に設定していることです。

于 2012-10-02T04:59:19.217 に答える