4

次のアルゴリズムでマップを作成しようとしています。

  1. パンまたはズームが発生するまで待ちます。
  2. ビューポート (範囲) に表示されているすべての道路を照会します。
  3. すべての可視道路を定義済みの色で着色します。

例:
各通りにある企業の数、または各通りで犯された犯罪の数を表示したい。
この種の情報 (通り名、データ) を保持する DB がありますが、各行には位置データがありません。
したがって、マップのズームまたはパンのたびに、地理的な境界四角形ですべてを照会することはできません。Google 独自の DB を使用して通りの名前で照会する方がはるかに効率的です。

パンとズームのイベントに登録する方法を知っています。ビューポート座標の計算
方法を知っています。私は 1 つの通りに色 を付ける方法を知っています。

ビューポートに表示されているすべての道路のリストを取得するにはどうすればよいですか?
他のソリューションやアーキテクチャは大歓迎です。Google DirectionsService も DirectionsRenderer もマップの速度を低下させるため、推奨されるソリューションは使用しません。

4

2 に答える 2

0

私の理解では、あなたが求めていることは Google API からは不可能です。ポリゴン内の逆ジオコーディングは、提供するサービスではありません。他のサイト (例: https://gis.stackexchange.com/questions/22816/how-to-reverse-geocode-without-google ) にはいくつかの投稿があり、参照gisgraphy.comは非常にきちんとしたリバース ジオコーディング ツールのように見えます。

ただし、これはポリゴンの問題ですべての道路に対処するわけではありません。あなたの唯一の選択肢は、データを手に入れて(Open Street Maps)、自分でコードを書くことだと思います。さらに-これを広い領域で行う場合は、ここでグリッドを使用して推奨するようなアプローチをとります: https://stackoverflow.com/a/18420564/1803682

グリッド エレメントを作成し、ストリートごとに、それが属するすべてのグリッドを計算し、データベースに保存します。次に、ポリゴンを検​​索するときに、ポリゴンがオーバーラップするすべてのグリッドを計算し、それらの各正方形の道路データのサブセットをテストしてオーバーラップを判断できます。

私はこれを調べ、数か月前に同様の要件を放棄しましたが、まだ実装したいと考えています。ポリゴン作業のポイント/ラインのほとんどは、私のアプリケーションで作成されたデータ (つまり、ストリート データではない) で行われています。私が言おうとしているのは、誰かがあなたにもっと良い答えをくれることを願っています.

アップデート:

あなたが求めていることについては、OpenStreetMap に基づく独自のデータベースと、事前に実行された何らかのグリッド分析を組み合わせて使用​​する必要があると私はまだ信じています。プロジェクトにコミットする時間があれば、これを処理するのはそれほどひどいことではありません。データベースは大規模になり、必要な計算にはかなりの量の 1 回限りの / 前払いの処理時間が必要になる可能性があります。ビューポート内のルート/道路/その他のものを強調表示する限り、API を使用してこれを達成する方法はたくさんあります - 私が役に立つと思った例: google maps api v3 を使用した道路へのポリライン スナップ

また役に立つ: http://econym.org.uk/gmap/snap.htm

方向 API を使用して道路にスナップする場合、一方通行の道路は多少の苦痛を与える可能性があることに注意してください。これに注意して、始点/終点を修正または反転する必要があります。

于 2013-09-04T17:34:02.367 に答える
-1

Google では、データベースに座標を入力するために、ジオコーディング サービスを使用することをお勧めします。次に、LatLng Bounds Classメソッドの「contains」を使用して、ポイントがビューポート内にあるかどうかを確認できます。このアプローチの利点は、ビューポートが変更されるたびにコーディング リクエストを送信するのではなく、情報を 1 回ジオコーディングして保存するだけでよいことです。

この種のデータを表示する別の効率的な方法は、Google Fusion Tables を使用することです。これにより、データとマップの統合が大幅に簡素化されます。

于 2013-09-05T10:46:38.433 に答える