0

Maps 3 API の初期のバージョンでは、カスタム マップ タイプを使用して次のことを行うための「オーバーレイ」機能を構築しました。これは、常に Google のタイルの上にタイルを提供するのではなく、Google のタイルのみを表示するという考え方でした。必要に応じて - タイルがズームと境界の外側にある場合、またはタイルに透明度がある場合 (ほとんどの場合、オーバーレイの外側の境界が川などに続く可能性があるため)。それは次のように機能しました:

  1. タイプで が呼び出されたときgetTileに、特定のレベルで特定のタイルを提供する必要があるかどうかを判断します。

  2. タイルを提供する必要がある場合は、タイルに透明度があるかどうかを判断します。透明度がある場合は、次を使用してデフォルト マップからタイルを取得します。

    map.mapTypes.get(google.maps.MapTypeId.ROADMAP).getTile(coord, zoom, ownerDocument)`
    

    次に、返された div の上部に画像を追加して表示します。それ以外の場合は、タイルを提供してください。

  3. 私がタイルを提供すべきでない場合は、ただ戻ってください

    map.mapTypes.get(google.maps.MapTypeId.ROADMAP).getTile(coord, zoom, ownerDocument)
    

そのため、何らかの窃盗が原因で、getTile が Google のネイティブ マップ タイプで何も返さなくなったようです。これにより、次の 2 つの疑問が生じます。

  1. マップ全体をオーバーレイにすることなく、完全なタイルではなくオーバーレイとしてタイルを表示する必要があることをマップに伝える方法はありますか?

  2. 私のタイルとは対照的に、独自のタイルを表示する必要があることをマップに伝える方法はありますか?


オーバーレイ マップはソリューションとして機能しますが、パフォーマンスは良くありません。Google が最初に独自のタイルを描画し、次にそれらを私のタイルでオーバーレイするため、かなりの数の再描画があります。私のタイルの 99% は完全なオーバーレイ (透明度なし) であるため、これはかなりの帯域幅の浪費のように思えます。デフォルトの Google タイルを描画する必要があるかどうかを示すメタデータを getTile から返すことができると便利です (または、他のコールバックでその事実を示します)。以前は洗練されたソリューションのように見え、うまく機能していましたが、オーバーレイの方法論は間違いなく一歩後退しています。マルセロ、私のタイトルが私の質問を反映していない理由がわかりません...問題の全文を読みましたか?

4

1 に答える 1

0

ベース マップ タイプにはアクセスできません。悪用が続いているため、Google によって意図的に無効にされています。

ある時点でこれはバグとして報告されましたが、このスレッドでマップ チームのメンバーによるコメントを読むことができます。

そのページからの引用:

残念ながら、サービス利用規約で許可されていない google.maps.Map オブジェクトの外部にある Google マップ タイルにアクセスして使用するためにデフォルトのマップ タイプを使用する開発者のケースが増えていることを発見しました。そのため、内部マップ タイプをプライベート レジストリに移動する必要がありました。利用規約に準拠したマップ タイプへのアクセスが必要な特定の理由がある場合は、ユース ケースでこの問題を更新してください。十分な需要がある場合は、要件に対してサポート可能なソリューションを提供できるかどうかを検討します。 .

Thor Mitchell (Google 社員 - マップ チーム)

于 2012-11-09T07:47:54.533 に答える