0

私はグーグルマップを使用するプロジェクトに取り組んでいます。HTML5ジオローカリゼーションを使用して地図を設定します。ジオローカリゼーションがサポートされていないか拒否されている場合は、マップの中心を任意に設定します。

私の問題は2つのことについてです:

  • グーグルマップのロードに関する最初の1つ:ジオロカリゼーションが受け入れられると、マップのロードは通常は遅くなります(私は今中国にいますが、それが理由でしょうか?)。Firefoxではロードされません...しかしjavascriptエラーはありません。

  • より一般的には、Webサイト全体の表示は非常にバグがあります。マップを十分にズームアウトすると、マーカーが表示されます。それは問題ありませんが、特定のコンテンツは通常、マップの下に表示されます。このコンテンツはほとんど見えないか、ウィンドウの幅全体に広がる醜い黒いブロックによって隠されています...

ブートストラップ(レスポンシブCSSファイルとjavascriptプラグインを含む)、awesomefont、およびいくつかの追加のjavascriptコードを使用しています。

何か考えはありますか?特に私を夢中にさせる2番目のポイントについては...

ありがとう

編集 問題をチェックするためのURLを提供しない場合、どのように私を助けることができますか:それはここにあります

4

1 に答える 1

1

http://victorinox.pythonanywhere.com/static/js/manager_functions.jsの 143 行目にエラーがあります。

map.setCenter(google.maps.LatLng(loc.coords.latitude, loc.coords.longitude));

である必要があります

map.setCenter( new google.maps.LatLng(loc.coords.latitude, loc.coords.longitude));
//------------^

その他:ユーザーが HTML5 ジオロケーションの許可を拒否した場合、Firefox はエラー コールバックを起動しません。そのため、マップの中心が他の場所に設定されていないため、中心は必須オプションであるため、マップは読み込まれません。

センターは初期化で設定されると思うかもしれませんが、firefox では、ユーザーがジオロケーションの許可を拒否したときに初期化が呼び出されることはありません。これを見てください:

$(function() {
     //creates the map, no center will be set in createMap()
    map = createMap();
     //in firefox there will not be set a center
     //when user denies permission, because error-callback will not execute
    geolocalize();
     // when the map 
    center = map.getCenter();
     //will never run, because when the map doesn't have a center 
     //there will no tiles load
    google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
        initialize();
    });
})

提案: 現在、マーカーのちらつきがあります。複数のイベント (zoom_changed、dragond、resize) でマーカーをリロードし、すべてのマーカーを削除して、XHR 応答に基づいて新しいマーカーを作成します。

代わりに、マーカーのキャッシュを作成する必要があります (たとえば、XHR 応答によって指定された ID に基づいてマーカーを識別できる場所)。新しい応答を取得すると、新しいマーカーがキャッシュ内にない場合にのみ作成され、他のマーカーはマップ上に表示されたままになります(ビューポート内に表示されていないマーカーを削除/非表示にしてもメリットはありません)

また、3 つのイベントではなく、bounds_changed のみでマーカーを更新するだけで十分です。

于 2013-01-12T19:07:46.153 に答える