Google maps api 3 谷歌地图API-地点动画
是否可以在20秒内将地图中心从一个位置移动到另一个位置?如果是这样,我该如何实现这一点?该方法将使用动画更改中心 将贴图的中心更改为给定的板条。如果更改小于贴图的宽度和高度,则过渡将平滑设置动画 但是,您无法使用map#panTo方法控制动画延迟/间隔。我认为您可以使用Google maps api 3 谷歌地图API-地点动画,google-maps-api-3,Google Maps Api 3,是否可以在20秒内将地图中心从一个位置移动到另一个位置?如果是这样,我该如何实现这一点?该方法将使用动画更改中心 将贴图的中心更改为给定的板条。如果更改小于贴图的宽度和高度,则过渡将平滑设置动画 但是,您无法使用map#panTo方法控制动画延迟/间隔。我认为您可以使用window.setTimeout()破解自定义延迟: 查看从旧金山飞往维加斯的定制5秒动画@ 它并不完美,但在Chrome中,它似乎对我相当有效 函数初始化(){ var origin=new google.maps.LatLn
window.setTimeout()
破解自定义延迟:
查看从旧金山飞往维加斯的定制5秒动画@
它并不完美,但在Chrome中,它似乎对我相当有效
函数初始化(){
var origin=new google.maps.LatLng(37.774,-122.419),
dest=new google.maps.LatLng(36.114,-115.172),
canvas=document.getElementById(“映射画布”),
选项={
中心:起源,
缩放:8,
mapTypeControl:false
};
google.maps.visualRefresh=true;
var map=newgoogle.maps.map(画布,选项);
google.maps.event.addDomainListenerOnce(映射,'idle',函数(){
潘托(地图,目的地,5000);
});
}
功能panTo(地图、目的地、延迟){
var GOOGLE_PAN_DELAY=30,
/*原生谷歌地图*/
周期=延迟/谷歌平移延迟,
间隔=延迟/周期,
origin=map.getCenter(),
航路点=[],
临时雇员
拉特,
液化天然气;
//计算lat/long的变化,并除以N个循环
lat=(dest.lat()-origin.lat())/周期;
lng=(dest.lng()-origin.lng())/循环;
//从原点开始,添加N-1个间距相等的中间航路点
温度=原点;
对于(var i=0;i
感谢Steve Jansen为您提供panTo功能。我对它进行了轻微的修改,以提供一个简单的移动。我把它放在这里,以防有人觉得有用
function panTo(map, dest, delay) {
var GOOGLE_PAN_DELAY = 30,
/* the native Google Maps milliseconds */
cycles = delay / GOOGLE_PAN_DELAY,
interval = delay / cycles,
origin = map.getCenter(),
waypoints = [],
temp,
step,
lat,
lng;
// compute the change in lat/long, and divide across N cycles
lat = (dest.lat() - origin.lat()) / cycles;
lng = (dest.lng() - origin.lng()) / cycles;
// starting at origin, add N-1 intermediate waypoints that are equidistance apart
temp = origin;
for (var i = 0; i < cycles - 1; i++) {
step = cycles / ((cycles - i)*(cycles - i));
temp = new google.maps.LatLng(temp.lat() + (lat * step), temp.lng() + (lng * step));
waypoints.push(temp);
}
// make sure the last waypoint is the actual dest
waypoints.push(dest);
function pan() {
var waypoint;
if (waypoints.length === 0) return;
waypoint = waypoints.shift();
map.panTo(waypoint);
window.setTimeout(pan, interval);
}
pan();
}
功能面板(地图、目的地、延迟){
var GOOGLE_PAN_DELAY=30,
/*原生谷歌地图*/
周期=延迟/谷歌平移延迟,
间隔=延迟/周期,
origin=map.getCenter(),
航路点=[],
临时雇员
步
拉特,
液化天然气;
//计算lat/long的变化,并除以N个循环
lat=(dest.lat()-origin.lat())/周期;
lng=(dest.lng()-origin.lng())/循环;
//从原点开始,添加N-1个间距相等的中间航路点
温度=原点;
对于(var i=0;i