javascript - 在javascript中将用户位置与谷歌地图同步

标签 javascript google-maps navigation synchronization

是否可以使用地理定位同步用户位置?这样,如果用户正在旅行,他的位置将在页面上更新,有些类似于导航他的位置...

我已经试过了,但是整个 map 一直在刷新,加载需要时间……它工作正常,但是,有没有更好的方法可以让我跟踪用户的位置?

    <script src="https://maps.googleapis.com/maps/api/js"></script>
    <script src="../dist/geolocationmarker-compiled.js"></script>
    <script>
        var map, GeoMarker;

        setInterval (function initialize() {
            var mapOptions = {
                zoom: 17,
                center: new google.maps.LatLng(-34.397, 150.644),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            map = new google.maps.Map(document.getElementById('map_canvas'),
            mapOptions);

            GeoMarker = new GeolocationMarker();
            GeoMarker.setCircleOptions({fillColor: '#808080'});

            google.maps.event.addListenerOnce(GeoMarker, 'position_changed',     function() {
                map.setCenter(this.getPosition());
                map.fitBounds(this.getBounds());
            });

            google.maps.event.addListener(GeoMarker, 'geolocation_error', function(e) {
                alert('There was an error obtaining your position. Message: ' + e.message);
            });
            console.log('updating');
            GeoMarker.setMap(map);
        },10000);

    google.maps.event.addDomListener(window, 'load', initialize);

    if(!navigator.geolocation) {
        alert('Your browser does not support geolocation');
    }

</script>
<body>
    <div id="map_canvas"></div>
</body>

最佳答案

位置改变时不要重新创建 map ,只更新标记在 map 上的位置。

var map, GeoMarker;
function initialize() {
            var mapOptions = {
                zoom: 17,
                center: new google.maps.LatLng(-34.397, 150.644),
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            map = new google.maps.Map(document.getElementById('map_canvas'),
            mapOptions);
}
setInterval (function() {
    if (!GeoMarker) {
      GeoMarker = new GeolocationMarker();
    }
    GeoMarker.setCircleOptions({fillColor: '#808080'});

    google.maps.event.addListenerOnce(GeoMarker, 'position_changed',     function() {
            map.setCenter(this.getPosition());
            map.fitBounds(this.getBounds());
    });

    google.maps.event.addListener(GeoMarker, 'geolocation_error', function(e) {
        alert('There was an error obtaining your position. Message: ' + e.message);
    });
    console.log('updating');
    GeoMarker.setMap(map);
},10000);
google.maps.event.addDomListener(window,'load',initialize);

if(!navigator.geolocation) {
    alert('Your browser does not support geolocation');
}

关于javascript - 在javascript中将用户位置与谷歌地图同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31206678/

相关文章:

javascript - Ckeditor上传图片404错误/插件设置

javascript - 订阅 BehaviorSubject 时,如何避免在可观察对象中执行两次 promise ?

java - AngularJS 和 Servlet 集成

javascript - 使用几何多边形来围住其他多边形

android - 缺少 Google Maps API V2 google-play-services_lib.jar

css - IE11 的导航问题

javascript - 在单个 Controller 中生成一个对话框。 Angular.js

ios Google SDK Map 无法创建点折线

css - IE 6 无法识别当前页面

android - 使用 backstack 时 fragment 未替换