Q
減慢谷歌泛到功能
19
A
回答
14
可悲的是,不,你不能改變的啞劇動畫的速度。
函數只需要一個latlng參數。詳情在這裏:http://code.google.com/apis/maps/documentation/javascript/reference.html#Map
14
我寫我自己的執行panTo。使用類「EasingAnimator」。
var EasingAnimator = function(opt){
opt = opt || {};
this.easingInterval = opt.easingInterval;
this.duration = opt.duration || 1000;
this.step = opt.step || 50;
this.easingFn = opt.easingFn || function easeInOutElastic(t, b, c, d) {
if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
return -c/2 * ((t-=2)*t*t*t - 2) + b;
};
this.callBack = opt.callBack || function(){};
};
EasingAnimator.makeFromCallback = function(callBack){
return new EasingAnimator({
callBack: callBack
});
};
EasingAnimator.prototype.easeProp = function(obj, propDict){
propDict = propDict || {};
var self = this,
t = 0,
out_vals = JSON.parse(JSON.stringify(obj));
clearInterval(self.easingInterval);
self.easingInterval = setInterval(function(){
t+= self.step;
if (t >= self.duration) {
clearInterval(self.easingInterval);
self.callBack(propDict);
return;
}
var percent = self.easingFn(t, 0, 1, self.duration);
Object.keys(propDict).forEach(function(key, i) {
var old_val = obj[key];
out_vals[key] = old_val - percent*(old_val - propDict[key]);
});
self.callBack(out_vals);
}, self.step);
};
現在你可以控制所有的東西,包括持續時間,步驟,當然還有緩動功能。這裏有一些很好的例子http://easings.net/。現在你可以使用它的一些這樣的:
dom_elem.addEventListener('click', function(event){
var point = map.getCenter();
easingAnimator.easeProp({
lat: point.lat(),
lng: point.lng()
}, points[i]);
});
在這裏,你可以找到它是如何工作 http://codepen.io/ErDmKo/pen/Jdpmzv
1
我寫了實施「慢鍋」與谷歌地圖API V3的功能現場演示。它使用小的平移步驟以及之前的答案,但我認爲實現更簡單一些。您可以使用f_timeout()的緩動函數。
參數
地圖:你google.maps.Map對象
終端位置:所需位置平移來,google.maps.LatLng
n_intervals:泛間隔的數目越多,轉換更平滑但性能更低012_
T_msec:慢速盤完成的總時間間隔(毫秒)
var slowPanTo = function(map, endPosition, n_intervals, T_msec) {
var f_timeout, getStep, i, j, lat_array, lat_delta, lat_step, lng_array, lng_delta, lng_step, pan, ref, startPosition;
getStep = function(delta) {
return parseFloat(delta)/n_intervals;
};
startPosition = map.getCenter();
lat_delta = endPosition.lat() - startPosition.lat();
lng_delta = endPosition.lng() - startPosition.lng();
lat_step = getStep(lat_delta);
lng_step = getStep(lng_delta);
lat_array = [];
lng_array = [];
for (i = j = 1, ref = n_intervals; j <= ref; i = j += +1) {
lat_array.push(map.getCenter().lat() + i * lat_step);
lng_array.push(map.getCenter().lng() + i * lng_step);
}
f_timeout = function(i, i_min, i_max) {
return parseFloat(T_msec)/n_intervals;
};
pan = function(i) {
if (i < lat_array.length) {
return setTimeout(function() {
map.panTo(new google.maps.LatLng({
lat: lat_array[i],
lng: lng_array[i]
}));
return pan(i + 1);
}, f_timeout(i, 0, lat_array.length - 1));
}
};
return pan(0);
};
相關問題
- 1. 功能,減慢php頁
- 2. 用setTimeout減慢AJAX功能
- 3. 谷歌雲功能
- 4. 谷歌Appscript - 功能無法找到
- 5. 谷歌查詢功能
- 6. 谷歌的BigQuery CASE功能
- 7. 谷歌表 - 如果功能
- 8. INSTALL_ASSET功能從谷歌
- 9. 定製谷歌表功能
- 10. jQuery如何減慢結果後功能
- 11. 谷歌Analytics(分析)不能在功能
- 12. 谷歌地圖很慢
- 13. 減少100頁的谷歌
- 14. 谷歌地圖JS功能改變
- 15. 谷歌牀單,或邏輯功能
- 16. 谷歌應用腳本:GmailApp.search功能
- 17. 移動谷歌引力功能
- 18. 如何更改谷歌雲功能區?
- 19. 縮放功能谷歌地圖
- 20. 谷歌電子表格IMPORTXML功能
- 21. 谷歌雲消息通知功能?
- 22. 調試谷歌表自定義功能
- 23. 調用谷歌電子表格功能
- 24. 從谷歌pr功能檢查代碼
- 25. 谷歌標記點擊做功能
- 26. 提高谷歌表查詢功能
- 27. 谷歌表的平均功能
- 28. 谷歌建議喜歡功能在ios
- 29. 挖空功能和谷歌地圖
- 30. 谷歌照片球照相機功能
不幸的是,標記偶爾(經常)消失。這似乎是一個地圖太多微動作 – djdance 2016-12-26 16:02:18
這在我的情況下出色地工作,我的大多數標記已經在屏幕上可見。我已經調整了codepen樣本。謝謝@ErDmKo! – 2017-01-15 01:30:19