-1

私は地図キットMKMapViewのアプリケーションに非常に慣れていませんでした。

組織内の 1000 人のメンバーのリストがありますaddresses

I have get the coordinates(lat, long) これらのすべてのメンバーaccording to their addresses,

- (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address メソッドを使用して

このリンクを参照して

そして、マップビューで1000人のメンバー全員の注釈を表示する このリンクを参照してください

しかし今、私の要件は、近くの現在の場所のメンバーの場所のみin 2 waysを表示することです。

  1. 自分の近くにいる上位 20 人のメンバー
  2. 私の周りの50KMに囲まれたすべてのメンバーのリスト

これら 2 つのシナリオを実装する方法

4

1 に答える 1

2

各メンバーと現在の場所の間の距離を見つける必要があります。

CLLocation *memberlocation = [[CLLocation alloc] initWithLatitude:memberlat longitude:memberlong];

CLLocation *yourcurrentlocation = [[CLLocation alloc] initWithLatitude:currentlocationlat longitude:currentlocationlong];

CLLocationDistance distance = [memberlocation distanceFromLocation:yourcurrentlocation];

次に、それらを使用して最も近いメンバーを見つけることができ、独自のロジックを使用して、必要なソリューションのコードを取得できます。

1000 の住所と自己の位置を比較するのに時間がかかると思われる場合は、すべてのメンバー lat-long があるサーバー Web サービスに自己の位置 lat-long を送信します。Web サービスでは、次のクエリを使用して最も近い 20 を見つける必要があります。メンバー。

SELECT top (20) id, ( 6371 * acos( cos( radians(13.0610) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(80.2404) ) + sin( radians(13.0610) ) * sin( radians( lat ) ) ) ) AS distance 
FROM markers  ORDER BY distance;

ここでは、13.0610 の代わりに自分の位置の緯度を渡す必要があり、80.2404 は経度です。

于 2013-07-05T05:37:12.990 に答える