利用HTML5中Geolocation獲取地理位置調(diào)用Google Map API在Google Map上定位
來源:易賢網(wǎng) 閱讀:2265 次 日期:2016-07-22 15:23:07
溫馨提示:易賢網(wǎng)小編為您整理了“利用HTML5中Geolocation獲取地理位置調(diào)用Google Map API在Google Map上定位”,方便廣大網(wǎng)友查閱!

剛開始學(xué)習(xí)HTML5,現(xiàn)在對其中的Geolocation頗感興趣,結(jié)合Google Map的API實現(xiàn)基本的地圖定位功能主要是由以下幾個步驟:獲取當(dāng)前地理位置、調(diào)用Google Map API獲取當(dāng)前位置信息

1.獲取當(dāng)前地理位置

調(diào)用方法 void getCurrentPosition(onSuccess, onError, options);即可。

其中onSuccess是獲取當(dāng)前位置信息成功時執(zhí)行的回調(diào)函數(shù),onError是獲取當(dāng)前位置信息失敗時所執(zhí)行的回調(diào)函數(shù),options是一些可選熟悉列表。其中第二和第三個參數(shù)為可選屬性。

在onSuccess回調(diào)函數(shù)中,用到了參數(shù)position,代表一個具體的position對象,表示當(dāng)前位置。其具有如下屬性:

•latitude:當(dāng)前地理位置的緯度。

•longitude:當(dāng)前地理位置的經(jīng)度。

•altitude:當(dāng)前位置的海拔高度(不能獲取時為null)。

•accuracy:獲取到的緯度和經(jīng)度的精度(以米為單位)。

•altitudeAccurancy:獲取到的海拔高度的經(jīng)度(以米為單位)。

•heading:設(shè)備的前進(jìn)方向。用面朝正被方向的順時針旋轉(zhuǎn)角度來表示(不能獲取時為null)。

•speed:設(shè)備的前進(jìn)速度(以米/秒為單位,不能獲取時為null)。

•timestamp:獲取地理位置信息時的時間。

在onError回調(diào)函數(shù)中,用到了error參數(shù)。其具有如下屬性:

•code:錯誤代碼,有如下值。

1.用戶拒絕了位置服務(wù)(屬性值為1);

2.獲取不到位置信息(屬性值為2);

3.獲取信息超時錯誤(屬性值為3)。

•message:字符串,包含了具體的錯誤信息。

在options參數(shù)中,可選屬性如下:

•enableHighAccuracy:是否要求高精度的地理位置信息。

•timeout:設(shè)置超時時間(單位為毫秒)。

•maximumAge:對地理位置信息進(jìn)行緩存的有效時間(單位為毫秒)。

其中注意要寫上如下代碼,判斷瀏覽器是否支持HTML5獲取地理位置信息,以兼容較早不支持的瀏覽器。

代碼如下:

if (navigator.geolocation) {

//獲取當(dāng)前地理位置信息

navigator.geolocation.getCurrentPosition(onSuccess, onError, options);

} else {

alert("你的瀏覽器不支持HTML5來獲取地理位置信息。");

}

2.調(diào)用Google Map API獲取當(dāng)前位置信息

首先,需要在頁面中引用Google Map API的腳本文件,導(dǎo)入方法如下所示。

代碼如下:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

其次,設(shè)定地圖參數(shù),設(shè)定方法如下所示。

代碼如下:

//指定一個google地圖上的坐標(biāo)點,同時指定該坐標(biāo)點的橫坐標(biāo)和縱坐標(biāo)

var latlng = new google.maps.LatLng(coords.latitude, coords.longitude);

var myOptions = {

zoom: 14, //設(shè)定放大倍數(shù)

center: latlng, //將地圖中心點設(shè)定為指定的坐標(biāo)點

mapTypeId: google.maps.MapTypeId.ROADMAP //指定地圖類型

};

最后,創(chuàng)建地圖,并在頁面中顯示,創(chuàng)建方法如下所示

代碼如下:

//創(chuàng)建地圖,并在頁面map中顯示

var map = new google.maps.Map(document.getElementById("map"), myOptions);

最后的最后,獻(xiàn)上本次示例所有代碼。代碼如下所示。

代碼如下:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>獲取當(dāng)前位置并顯示在google地圖上</title>

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

<script type="text/javascript">

function init() {

if (navigator.geolocation) {

//獲取當(dāng)前地理位置

navigator.geolocation.getCurrentPosition(function (position) {

var coords = position.coords;

//console.log(position);

//指定一個google地圖上的坐標(biāo)點,同時指定該坐標(biāo)點的橫坐標(biāo)和縱坐標(biāo)

var latlng = new google.maps.LatLng(coords.latitude, coords.longitude);

var myOptions = {

zoom: 14, //設(shè)定放大倍數(shù)

center: latlng, //將地圖中心點設(shè)定為指定的坐標(biāo)點

mapTypeId: google.maps.MapTypeId.ROADMAP //指定地圖類型

};

//創(chuàng)建地圖,并在頁面map中顯示

var map = new google.maps.Map(document.getElementById("map"), myOptions);

//在地圖上創(chuàng)建標(biāo)記

var marker = new google.maps.Marker({

position: latlng, //將前面設(shè)定的坐標(biāo)標(biāo)注出來

map: map //將該標(biāo)注設(shè)置在剛才創(chuàng)建的map中

});

//標(biāo)注提示窗口

var infoWindow = new google.maps.InfoWindow({

content: "當(dāng)前位置:<br/>經(jīng)度:" + latlng.lat() + "<br/>維度:" + latlng.lng() //提示窗體內(nèi)的提示信息

});

//打開提示窗口

infoWindow.open(map, marker);

},

function (error) {

//處理錯誤

switch (error.code) {

case 1:

alert("位置服務(wù)被拒絕。");

break;

case 2:

alert("暫時獲取不到位置信息。");

break;

case 3:

alert("獲取信息超時。");

break;

default:

alert("未知錯誤。");

break;

}

});

} else {

alert("你的瀏覽器不支持HTML5來獲取地理位置信息。");

}

}

</script>

</head>

<body onload="init()">

<div id="map" style="width: 800px; height: 600px"></div>

</body>

</html>

更多信息請查看網(wǎng)頁制作
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機(jī)號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機(jī)站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報警專用圖標(biāo)