HTML5地理位置监视位置正在重新加载完整的地图,而不仅仅是位置



我有一个代码,但问题是watchposition()正在重新编码整个地图,而不仅仅是位置,我想要的是当我缩放时,即使位置发生变化,它也只会将标记更改为的那个位置

<p id="demo">Click the button to get your position:</p>
<button onclick="getLocation()">Try It</button>
<div id="mapholder"></div>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script>
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
    navigator.geolocation.watchPosition(showPosition,showError);
} else { 
    x.innerHTML = "Geolocation is not supported by this browser.";}
}
 function showPosition(position) {
 lat = position.coords.latitude;
 lon = position.coords.longitude;
  latlon = new google.maps.LatLng(lat, lon)
 mapholder = document.getElementById('mapholder')
 mapholder.style.height='250px';
 mapholder.style.width='500px';
 var myOptions={
 center:latlon,zoom:14,
 mapTypeId:google.maps.MapTypeId.ROADMAP,
mapTypeControl:false,
navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL}
}
var map = new google.maps.Map(document.getElementById("mapholder"),myOptions);
var marker = new google.maps.Marker({position:latlon,map:map,title:"You are here!"});
 }
 function showError(error) {
switch(error.code) {
    case error.PERMISSION_DENIED:
        x.innerHTML = "User denied the request for Geolocation."
        break;
    case error.POSITION_UNAVAILABLE:
        x.innerHTML = "Location information is unavailable."
        break;
    case error.TIMEOUT:
        x.innerHTML = "The request to get user location timed out."
        break;
    case error.UNKNOWN_ERROR:
        x.innerHTML = "An unknown error occurred."
        break;
      }
     }
     </script>
    </body>
      </html>

这是因为您正在重新加载映射。你应该换个中心。

所以你应该修改你的代码,使其具有两个功能:

1-将地图程序化。

     function initialize(position) {
       lat = position.coords.latitude;
       lon = position.coords.longitude;
       latlon = new google.maps.LatLng(lat, lon)
       mapholder = document.getElementById('mapholder')
       mapholder.style.height='250px';
       mapholder.style.width='500px';
       var myOptions={
        center:latlon,zoom:14,
        mapTypeId:google.maps.MapTypeId.ROADMAP,
        mapTypeControl:false,
        navigationControlOptions:{style:google.maps.NavigationControlStyle.SMALL}
     }
     var map = new google.maps.Map(document.getElementById("mapholder"),myOptions);
     var marker = new google.maps.Marker({position:latlon,map:map,title:"You are here!"});
}

2-改变焦点。

 function showPosition(position) {
  map.setCenter(position);
 }

相关内容

最新更新