使用Google Ajax API可以在JavaScript中依Client IP來決定使用者的位置。簡單說就是 IP geocoding。Google Ajax API的IP Geocoding應與Google Analytics一致的,經大約測試結果,可以大致定到北中南的位置。不過有時侯還是會有問題,例如在台中,程式卻判定在台北三重,我想詳細的位置還是中華信電比較清楚。
以下是Google Map範例。
使用Google Ajax API亦可直接使用Google Map,不需再申請Google Map API key。
原本Google Map API建立地圖物建的方式
var map = new GMap2(document.getElementById("map"));
Google Ajax API建立地圖及取得使用者IP、座標
<script>
google.load("maps", "2", {callback: initialize});
function initialize() {
// 預設位置
var zoom = 3;
var latlng = new google.maps.LatLng(23.5, 121.5);
var location = "顯示預設位置.";
// 若由IP找到座標位置,就用以下的座標為主
if (google.loader.ClientLocation) {
zoom = 13;
latlng = new google.maps.LatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude);
location = "顯示 IP-based 位置: <b>" + getFormattedLocation() + "</b>";
}
document.getElementById("location").innerHTML = location;
//建立地圖
var map = new google.maps.Map2(document.getElementById('map'));
map.setCenter(latlng, zoom);
map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
}
//取得地名資訊
function getFormattedLocation() {
if (google.loader.ClientLocation.address.country_code == "US" &&
google.loader.ClientLocation.address.region) {
return google.loader.ClientLocation.address.city + ", "
+ google.loader.ClientLocation.address.region.toUpperCase();
} else {
return google.loader.ClientLocation.address.city + ", "
+ google.loader.ClientLocation.address.country_code;
}
}
</script>
以上程式碼,修改自Google Map範例