2

ユーザーの操作時にマップ内の場所を表示するiOSアプリを作成しています。説明付きのピンをドロップし、ズームインして地図の詳細を表示したいと思います。

URL http://maps.google.com/maps?q=-33.895851,151.18483+(Some+Description)&z=19でマップを呼び出すと、「Some Description」のピンが表示されますが、ズームレベルは無視されます。 。これ、GoogleマップのWebサイトで機能します。

http://maps.google.com/maps?q=-33.895851,151.18483&z=19を使用すると、ズームは機能しますが、ピンが表示されません。

、、のいくつかの組み合わせを試しましたが?q=、これまでのところ、ズームを変更して説明表示するものはありません。?ll=?sll=

手がかりはありますか?


はっきりしているので、ここにいくつかのスクリーンショットを示します。これを実際のデバイス(つまりiOSマップ)で動作させたい。シミュレーターはSafariを介してGoogleマップを使用します。

これが私がURL1で見るものです([[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=-33.895851,151.18483+(Some+Description)&z=19"]];

SS 1

これはURL2([[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://maps.google.com/maps?q=-33.895851,151.18483&z=19"]];)です:

SS 2

これはrelikdの提案です([[UIApplication sharedApplication] openURL:[NSURL URLWithString: @"http://maps.google.com/maps?z=19&q=-33.895851,151.18483+(Some+Description)"]];):

ここに画像の説明を入力してください

スクリーンショット2に表示されている画像が必要ですが、ピンと説明が付いています。


phix23のおかげで、&z=常に無視されているように見えます。私の例では、&z=19たまたまズームインしていたので幸運でした。つまり、言い換えると、iOSマップにズームインするように「促す」にはどうすればよいでしょうか。

4

4 に答える 4

1

サポートされていないようです。Appleのドキュメントには、次のように記載されています。

q=クエリパラメータ。このパラメータは、maps.google.comページのユーザーがクエリボックスに入力したものとして扱われます。q=*はサポートされていません

この一連のロジックに従うと、検索入力でズームを指定できないため、「q=」クエリ文字列パラメーターを使用できません。

http://developer.apple.com/library/ios/#featuredarticles/iPhoneURLScheme_Reference/Articles/MapLinks.html

于 2012-07-02T19:14:40.167 に答える
1

iOS用Googleマップはラスタータイル(.pngファイルだと思います)を使用しているため、画面上に目立たない数のタイルが表示されるサイズにスナップします。Googleは、ユーザーに可能な限り最高の画像を提供するためにこれを行います。間にズームインすることはできません。ユーザーだけが正確なズーム調整を行うことができます。

ズームレベルを正確にする必要がある場合は、Googleマップを使用して地図を表示することはできません。ベクター画像 を提供するマッピングプラットフォームに切り替える必要があります。OpenStreetMapは1つのオプションです。iOSアプリと統合するための既存のライブラリがあります。たとえば、Route-meおよびCloud-Madeを参照してください。

(ラスターとベクターの違いについてよく知らない場合は、ラスターとベクターの違いは何ですか?」を参照してください。

最後に、Apple.comのiOS 6マップページは、新しいiOS6マッピングサービスがベクターになることを示しています。このためのコーディングを希望する場合は、 developer.apple.comでiOS開発者プログラム($ 99 /年)にサインアップして、この秋にアプリがリリースされたときにアプリの準備ができるようにする必要があります。

于 2012-07-06T03:12:27.880 に答える
1

さまざまなクエリパラメータでテストしたところ、マップアプリではzパラメータがまったく使用されていないという結論に達しました。代わりに、クエリ文字列(q)のみを使用して適切なマップ領域を決定します。例:「china」を検索すると、非常に大きな領域が表示されます。これは、zの値に関係なく常に同じです。

ジオコーディングの場合、クエリ文字列を含むPOSTリクエストがに送信されhttp://www.google.com/glm/mmapます。基本的に、ピンとリージョンの場所+いくつかのメタデータを返します。

プロトコルはバイナリであるため、テストには公式APIを使用することをお勧めします。

例: http: //maps.google.com/maps/geo?q = -33.895851,151.18483

これにより、によって指定されたマップ領域を含む、ジオコーディングされた住所を持つJSONデータが得られます。

"LatLonBox": {
    "north": -33.8944020,
    "south": -33.8971000,
    "east": 151.1860350,
    "west": 151.1833370
  }

この領域は、結果を表示するためにアプリによって使用されます。

ただし、クエリ文字列に説明を設定すると、異なる結果が得られる可能性があります。アプリはジオコーディングによって説明を理解しようとするため、説明をまったく設定しないことをお勧めします。

回避策として、MapKitを使用して独自のアプリ内に地図を表示することもできます。次に、ズーム率とピンの注釈を完全に制御できます。また、Safariでマップを開くことを検討してください。おそらく、Googleマップの代わりにBingマップを使用してください。

良いニュース:

iOS 6 SDKには、マップアプリを開くための新しいAPIがあり、説明とマップ領域を指定できるようになりました。

CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(-33.895851,151.18483);
MKPlacemark* p = [[MKPlacemark alloc] initWithCoordinate:coordinate addressDictionary:nil];
MKMapItem* item =  [[MKMapItem alloc] initWithPlacemark:p];
item.name = @"Some Description";
MKCoordinateSpan span = MKCoordinateSpanMake(0.05, 0.05);
[item openInMapsWithLaunchOptions:@{ MKLaunchOptionsMapSpanKey : [NSValue valueWithMKCoordinateSpan:span] }];
于 2012-07-08T12:37:30.863 に答える
0

1年後、私はiOS Google Maps APIに移植しました。これは、ドラマなしで、私が望むことを正確に実行します。ズームレベルを18に設定すると、まさにそれが実行されます。強くお勧めします。

于 2013-06-29T07:18:00.257 に答える