-3

Google マップでユーザーをピンとして表示する必要があります。データベースからユーザーのレコードを取得したところ、現在約 20,000 人です。ドキュメントが読み込まれ、マップが作成されたら、データベースからすべてのユーザーを取得するために ajax リクエストを実行します。しかし、問題は、約 20,000 レコードの json 結果で ajax 呼び出しに応答すると、ブラウザーが動かなくなることです。結果を読み込んで Google マップにピンとして表示するのに 20 分かかる場合があります。これは間違った方法だと確信しています。

データベースの結果をGoogleマップのピンとしてロードする最良の方法を教えてください。リクエストごとに結果セットが異なる場合があることに注意してください (ログインしているユーザーの都市に基づいて - アイデアは近くのユーザーを表示することです)。

よろしくお願いします。

4

3 に答える 3

2

このような大量のデータでは、20,000本のピンを描画しようとすると時間がかかります。

クラスタリングのようなものを見てください-http: //gmaps-utility-library-dev.googlecode.com/svn/tags/markerclusterer/1.0/examples/advanced_example.html

または、近くのユーザーのみを表示している場合、実際に20,000人の近くのユーザーがいますか?ユーザーの現在の場所に基づいて、返されたユーザーリストを絞り込みます。

于 2012-11-27T08:33:30.110 に答える
1

処理能力の低いデバイスの場合、20,000 ピンは多すぎます。

すべてのピンをレンダリングする必要があると確信している場合は、情報をユーザーに提供する方法を慎重に検討する必要があります。情報を再利用できるように、ページの読み込み時にすべてを事前に読み込むつもりですか、それとも変更された場合に情報を再読み込みしようとしていますか。

いずれにせよ、Javascript が読み取れるように結果を XML で出力する場合は、XML ファイルが小さいほど読み込み時間が短縮されます。XMLを使用している場合は、それを減らすことができます...

<records>
    <record id="1">
        <name>blah</name>
        <longatude>blah</longatude>
        <latitude>blah</latitude>
    </record>
        <record id="2">
        <name>blah</name>
        <longatude>blah</longatude>
        <latitude>blah</latitude>
    </record>
</records>

に:

<records>
    <record id="1" n="blah" lat="bah" lon="blah" />
    <record id="2" n="blah" lat="bah" lon="blah" />
    <record id="3" n="blah" lat="bah" lon="blah" />
</records>

すべてのマーカーが必要であることが確実な場合は、ここで説明した Google マップ クラスタリングを使用して、一度にページに表示される数を減らします。

于 2012-11-27T08:49:03.237 に答える