發表文章

目前顯示的是 5月, 2011的文章

GoogleMap 判斷多個座標位置動態改變Zoom Size

最近有個需求就是一個地圖畫面可以隨意的讓使用者加入多個地標,而且要在第一次載入畫面的同時自動調整地圖大小來將所有地標呈現在可視範圍內。 在網路上找了許多文章,但幾乎(或者我沒找到)都是用GoogleMap API V2來實現,但是此次我試的例子是使用GoogleMap API V3來完成,因此沒辦法適用,在這裡我先說明一下V2的版本如何來完成。 //首先宣告 GLatLngBounds物件 var bounds = new GLatLngBounds(); //跑回圈將所有的座標加入 for(var i = 0; i < 10; i++){ bounds.extend(new GLatLng(lat,lng)); } //此方法可取得適當的地圖大小 map.getBoundsZoomLevel(bounds); //此方法可取地圖中心 bounds.getCenter(); V3版本,人家講了一大堆,結果都是Copy的根本無法使用,最後來是乖乖的上Google API 找答案比較快,解決方法如下(jQuery使用的是先前自己擴展的方法,這裡不再敘述) //在V3的版本請改用此物件 var bounds = new google.maps.LatLngBounds(); for (var i = 0; i < 10; i++) { //在API中說到extend【延伸此界限以包含指定的點】,這個意思是加入多個座標 bounds.extend(new google.maps.LatLng(lat, lng)); } //重新設定Zoom Size $(gmap1).getMap3().fitBounds(bounds);

double型態乘法問題

圖片
前一陣子同事在抓一個程式的Bug的時候發生了一件百思不得其解的問題,double型態在進行兩個變數比較的時候出現了【24.9 != 24.9】的詭異現象。下面法法中可以發現當變數A=24.9; B=8.3*3;這樣出來比較出來竟然出現了false的情況,在將兩變數轉換成字串型態後比較竟然又相等了。有此可見,雙精倍數在儲存變數的時候可能內含了極小的小數,小到在轉換成字串型態的時候無法出現所導致。

JavaScript跨網域讀取資料問題

先前的 文章 中有提到使用jQuery.get('xxx.html',{},function{});可以直接讀取同網域所回傳的資料,如XML...,但是最近有遇到一個Case就是要去讀取Google API 所提供的資料就一直發生問題。網路上有一些文章提到跨域存取要使用其它的方法,個人覺得這樣太麻煩了,於是提供大家另外的方法來使用。