HTML5地理位置监视位置不仅重新加载完整地图的位置

时间:2014-10-17 06:42:42

标签: javascript html5 google-maps geolocation

我有一个代码,但问题是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 个答案:

答案 0 :(得分:0)

那是因为你正在重新加载地图。你应该改变中心。

因此,您应该修改代码以具有2个函数:

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);

 }