Google maps api 3 谷歌地图API-地点动画

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

是否可以在20秒内将地图中心从一个位置移动到另一个位置?如果是这样,我该如何实现这一点?

该方法将使用动画更改中心

将贴图的中心更改为给定的板条。如果更改小于贴图的宽度和高度,则过渡将平滑设置动画

但是,您无法使用map#panTo方法控制动画延迟/间隔。我认为您可以使用
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