作者brandonron (假嗨)
看板AndroidDev
標題[問題] Google Map API 上的W3C的用法???
時間Thu Oct 10 16:56:36 2013
這是我看Google Map API V3時候,看到網路上有人利用這方式寫了位置偵測
底下是Google 提供的方法
var initialLocation;
var siberia = new google.maps.LatLng(60, 105);
var newyork = new google.maps.LatLng(40.69847032728747, -73.9514422416687);
var browserSupportFlag = new Boolean();
function initialize() {
var myOptions = {
zoom: 6,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map-canvas"),
myOptions);
// Try W3C Geolocation (Preferred)
if(navigator.geolocation) {
browserSupportFlag = true;
navigator.geolocation.getCurrentPosition(function(position) {
initialLocation = new
google.maps.LatLng(position.coords.latitude,position.coords.longitude);
map.setCenter(initialLocation);
}, function() {
handleNoGeolocation(browserSupportFlag);
});
}
// Browser doesn't support Geolocation
else {
browserSupportFlag = false;
handleNoGeolocation(browserSupportFlag);
}
function handleNoGeolocation(errorFlag) {
if (errorFlag == true) {
alert("Geolocation service failed.");
initialLocation = newyork;
} else {
alert("Your browser doesn't support geolocation. We've placed you in
Siberia.");
initialLocation = siberia;
}
map.setCenter(initialLocation);
}
}
---------------------------------------------------------------------------
這是網路上有人的做法
var browserSupportFlag = new Boolean();
function getCurrentLocation() {
var array1 = new Array(23.56935, 120.49416);
// Try W3C Geolocation (Preferred)
if(navigator.geolocation) {
browserSupportFlag = true;
navigator.geolocation.getCurrentPosition(function(position) {
array1 = [position.coords.latitude, position.coords.longitude];
}, function() {
handleNoGeolocation(browserSupportFlag);
});
// Try Google Gears Geolocation
} else if (google.gears) {
browserSupportFlag = true;
var geo = google.gears.factory.create('beta.geolocation');
geo.getCurrentPosition(function(position) {
array1 = [position.latitude,position.longitude];
}, function() {
handleNoGeoLocation(browserSupportFlag);
});
// Browser doesn't support Geolocation
} else {
browserSupportFlag = false;
handleNoGeolocation(browserSupportFlag);
}
return array1;
}
function handleNoGeolocation(errorFlag) {
if (errorFlag == true) {
alert("Geolocation service failed.");
} else {
alert("Test OK");
}
}
-----------------------------------------------------------------------------
裡面我看不懂一些地方,希望有人人解說一下
網友的寫法把經緯度宣告在array1內→23.56935, 120.49416
geo.getCurrentPosition(function(position) {
array1 = [position.latitude,position.longitude];
}
我一直不了解這段程式碼的 position.latitude指向array1的23.5936,而position.longitude是指120.49416 ??
原本我要依我手機的經緯度(或我輸入的值)來指定位置,但是雖然有定位到
但是Center一直都不會移到我輸入的值的位置上,我也覺得滿奇怪的
------------------------------------------------------------------
這是插入的程式碼
Var lat = Android.GetLat();
Var lon = Android.GetLon();
Var array1 = new Array(lat,lon)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.127.218.68
→ brandonron:var browserSupportFlag = new Boolean(); 的功能是? 10/10 16:57
→ brandonron:我知道rowserSupportFlag = new Boolean()了 10/10 16:59