如何阻止Google Maps API自动刷新? [英] How do I stop the Google Maps API from automatically refreshing?

查看:98
本文介绍了如何阻止Google Maps API自动刷新?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当前行为:页面会不断刷新我的位置和整个地图.

Current behaviour: The page constantly refreshes my location and the entire map.

期望的行为:我只想查找并显示当前位置一次,而不是连续地显示.

Desired behaviour: I only want to find and display the current location once, not continuously.

我该如何实现?

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>whereami</title>
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0; padding: 0 }
#map-canvas { height: 100% }
</style>

<script type="text/javascript" src="cordova.js"></script>
<script src="https://maps.googleapis.com/maps/api/js?key= xyz " type="text/javascript"></script>
<script type="text/javascript">

function onSuccess(position) {
var lat=position.coords.latitude;
var lang=position.coords.longitude;
var myLatlng = new google.maps.LatLng(lat,lang);
var mapOptions = {zoom: 17,center: myLatlng}
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var marker = new google.maps.Marker({position: myLatlng,map: map});
}

function onError(error) {}

var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { timeout: 0 });
google.maps.event.addDomListener(window, 'load', onSuccess);
</script>
</head>
<body>
<div id="geolocation"></div>
<div id="map-canvas"></div>
</body>
</html>

推荐答案

不要继续创建map.一次创建地图(在"initMap"函数中),将地图居中标记在watchPosition回调函数中的位置.

Don't keep recreating the map. Create the map once (in an "initMap" function), center the map an place the marker in the watchPosition callback function.

jsfiddle

// global variables
var map, marker, polyline;

function initMap() {
  // initialize the global map variable
  map = new google.maps.Map(document.getElementById('map-canvas'), {
    center: {
      lat: 0,
      lng: 0
    },
    zoom: 1
  });
  var watchID = navigator.geolocation.watchPosition(onSuccess, onError, {
    timeout: 5000
  });
}
google.maps.event.addDomListener(window, 'load', initMap);

function onSuccess(position) {
  var lat = position.coords.latitude;
  var lang = position.coords.longitude;
  var myLatlng = new google.maps.LatLng(lat, lang);
  map.setCenter(myLatlng);
  map.setZoom(18);
  if (marker && marker.setPosition)
    marker.setMap(myLatlng); // move the marker
  else // create a marker
    marker = new google.maps.Marker({
    position: myLatlng,
    map: map
  });
}

function onError(error) {
  console.log('ERROR(' + error.code + '): ' + error.message);
}

html {
  height: 100%;
  width: 100%;
}
body {
  height: 100%;
  width: 100%;
  margin: 0;
  padding: 0
}
#map-canvas {
  height: 100%;
  width: 100%;
}

<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<div id="geolocation"></div>
<div id="map-canvas"></div>

这篇关于如何阻止Google Maps API自动刷新?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆