0

CoreData に数千の場所が保存されており、 Google マップのvisibleRegion内にある場所を検索したいと考えています。以前はバウンディング ボックスを使用して検索を行っていましたが、ベアリング フィーチャを追加すると、このタイプのクエリが機能しなくなります。私にはいくつかのアイデアがありますが、これはいくつかのよく考えられた解決策に共通の問題であるに違いありません。ジオハッシュを使用するソリューションがあるかどうかを確認したいと思います。

これは、方位が真北でない場合に壊れる私のクエリです。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(lat > %f AND lat < %f AND lng > %f AND lng < %f)",
                                    [self.googleMap.projection visibleRegion].nearLeft.latitude,
                                    [self.googleMap.projection visibleRegion].farLeft.latitude,
                                    [self.googleMap.projection visibleRegion].nearLeft.longitude,
                                    [self.googleMap.projection visibleRegion].nearRight.longitude
                               ];
4

1 に答える 1

0

可視領域の軸に沿った境界ボックスを計算し、それを使用して位置を調べることができます。それらのいくつかはまだ実際の可視領域の外にありますが、少なくともそれらのほとんどを除外します.

GMSCoordinateBoundsクラスをGMSCoordinateBounds.h使用すると、これを簡単に行うことができます。

GMSMapView* _mapView = ...;

GMSCoordinateBounds* bounds = 
    [[GMSCoordinateBounds alloc] 
        initWithRegion: [_mapView.projection visibleRegion]];
CLLocationCoordinate2D northEast = bounds.northEast;
CLLocationCoordinate2D southWest = bounds.southWest;

現在、visibleRegion が大きすぎるというバグがあることにも注意してください。こちらを参照してください。

https://code.google.com/p/gmaps-api-issues/issues/detail?id=5107

その問題の回避策については、こちらを参照してください。

Google マップ iOS SDK: カメラの visibleRegion から正確な緯度と経度の座標を取得するにはどうすればよいですか?

于 2013-04-15T00:24:46.740 に答える