2

Google マップ v3 を使用して、マップの場所を常に中心とするマーカーを使用してマップを作成しようとしています。マーカーがドラッグ可能な場合、マーカーが同じマップのミラーに複製されることはありません (つまり、ズーム レベル 1 のときに表示される同一のマップを意味します)。マーカーのドラッグが無効になっている場合、マーカーはマップ ミラーに複製されますが、zoom:1 でマップを左右にパンすると、最終的にマーカーがミラーに隠れてしまいます。私はこの動作を理解できないので、ある種のリソース管理に違いありません。ただし、本当の問題は、マップ/マーカーの座標を抽出しようとしているのに、緯度/経度の値が無限に増加することです! 何らかの理由で緯度/経度の値に制限はありません...

1年前にこの同じ問題に遭遇したという事実は知っていますが、解決策が何であったか覚えていません。そのプロジェクトのコードでは、何が修正されたのかが明確になりません! この修正は LatLngBounds と関係があるのではないでしょうか?

    $(function(){

    var map = $('#map').gmap3({

        getgeoloc:{

        callback : function(latLng){
        // GEOLOCATION ALLOWED:
          if (latLng){
            $(this).gmap3({
              marker:{
                latLng:latLng,
                options:{
                draggable:false
                },
                events:{
                    dragend: function(marker, event, context){
                    window.currentmarkercenter = marker.getPosition();
                    document.getElementById('markerCoordinates').innerHTML = window.currentmarkercenter;
                    var map = $(this).gmap3("get");
                    map.panTo(window.currentmarkercenter);
                    }
                }
              },
              map:{
              options:{
              center:latLng,
              zoom:14
              },
              events:{
                center_changed: function(map, event, context){
                    window.currentmapcenter = map.getCenter();
                    document.getElementById('markerCoordinates').innerHTML = window.currentmapcenter;
                    var marker = $(this).gmap3({get:{name:"marker"}});
                marker.setPosition(window.currentmapcenter);
                    }
                }
              }
            });
            window.geolocation = 1;

          } else {
          //GEOLOCATION DENIED:
          $(this).gmap3({
            marker:{
                latLng:[38.27269,   -96.46094],
                options:{
                draggable:false
                },
                events:{
                    dragend: function(marker, event, context){
                    window.currentmarkercenter = marker.getPosition();
                    document.getElementById('markerCoordinates').innerHTML = window.currentmarkercenter;
                    var map = $(this).gmap3("get");
                    map.panTo(window.currentmarkercenter);
                    }
                }
              },
              map:{
              events:{
                center_changed: function(map, event, context){
                    window.currentmapcenter = map.getCenter();
                    document.getElementById('markerCoordinates').innerHTML = window.currentmapcenter;
                    }
                }
              }
            });
            }
          }
        }
    });
        });

HTML:

<div id="map" style="width:100%;margin-left:auto;margin-right:auto;"></div>
<div id="markerCoordinates" style="display:block;position:absolute;top:6px;left:42px;"></div>

私はhttp://gmap3.net/en/も使用していますが、JS をそのデモ ファイルの 1 つからのコードに置き換えると (これにより、マップ & パンすることができます)、座標値 & 「マップ ミラーリング」は期待どおりに機能します! 私は困惑しています!

4

0 に答える 0