4

私は何ヶ月も同じアプリに取り組んできましたが、これは新しい問題です。Apple Map データのサーバー側に変更があったのではないかと思っています。問題は次のとおりです。

私のアプリは (時々) MKMapView 領域を特定の場所の周りで可能な限り完全にズームインした値に設定したいと考えています。これを行うには、次のようにします。

self.map.mapType = MKMapTypeHybrid;
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake(item.lat, item.lng), 1.0, 1.0);
[self.map setRegion:region animated:NO];

座標がどこにあるかに関係なくitem's、グリッド付きの「衛星画像なし」の背景が表示されます。これは、米国の多くの地域で一貫して動作するため、利用可能な衛星画像とは関係がないようです。

setRegion:animated:事後に地域を調整する可能性があることは承知しています。そして、1 メートル四方という領域は、かなり大きな地図に表示しようとすると、不当に小さい領域であることは承知しています。だから、私は試しました

[self.map setRegion:[self.map regionsThatFits:region] animated:NO];

設定animated:YESによりこれが発生しないように見えますが、これらの変更をアニメーション化したくありません。

さらにいくつかの観察:

  • 1 ~ 2 ピクセルだけズームアウトすると、マップ イメージが表示されます。
  • マップ デリゲート メソッドを実装しようとしても、– mapViewDidFailLoadingMap:withError:役に立ちません。呼び出されることはありません。
  • これは新しいようです。アプリ ストアにあるアプリの動作中のバージョンでも、同様の問題が発生しています。
  • 最近、他の一般的なアプリでこれが発生するのを見てきました。

これに対する解決策、またはそれが体系的な問題であることの確認について何か考えはありますか?

4

2 に答える 2

1
//fix for ios6
if (region.span.latitudeDelta < .0005f)
    region.span.latitudeDelta = .0005f;
if (!region.span.longitudeDelta < .0005f)
    region.span.longitudeDelta = .0005f;

緯度/経度の地域スパンが低く設定されていないことを確認してください。

于 2013-06-27T19:48:59.293 に答える
1

最終的に をサブクラス化MKMapViewし、オーバーライドしsetRegion:ました。誰かが実際の問題や私の解決策に興味がある場合は、Github でサンプル アプリを作成しました。

https://github.com/DeepFriedTwinkie/iOS6MapZoomIssue

私のsetRegion:方法は次のようになります。

- (void) setRegion:(MKCoordinateRegion)region animated:(BOOL)animated {
    @try {
        // Get the zoom level for the proposed region
        double zoomLevel = [self getFineZoomLevelForRegion:region];

        // Check to see if any corrections are needed:
        //     - Zoom level is too big (a very small region)
        //     - We are looking at satellite imagery (Where the issue occurs)
        //     - We have turned on the zoom level protection

        if (zoomLevel >= (MAX_GOOGLE_LEVELS-1) && self.mapType != MKMapTypeStandard && self.protectZoomLevel) {
            NSLog(@"setRegion: Entered Protected Zoom Level");

            // Force the zoom level to be 19 (20 causes the issue)
            MKCoordinateRegion protectedRegion = [self coordinateRegionForZoomLevel:MAX_GOOGLE_LEVELS-1.0 atCoordinate:region.center];
            [super setRegion:protectedRegion animated:animated];
        } else {
            [super setRegion:region animated:animated];
        }
    }
    @catch (NSException *exception) {
        [self setCenterCoordinate:region.center];
    }
}
于 2013-07-19T23:56:13.087 に答える