導航:首頁 > 地理科目 > js如何獲取地理位置

js如何獲取地理位置

發布時間:2022-11-05 11:27:37

1. js微信獲取地理位置的介面怎麼用

微信官方文檔解釋如下:

  1. 公眾號須開通「上報地理位置」的介面;

  2. 用戶在關注後進入公眾號會話時,會彈框讓用戶確認是否允許公眾號使用其地理位置。(彈框只在關注後出現一次,用戶以後可以在公眾號詳情頁面進行操作)

  3. 用戶同意上報地理位置後,每次進入公眾號會話時,都會在進入時上報地理位置,上報地理位置以推送XML數據包到開發者填寫的URL來實現。

    推送XML數據包示例:

    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[fromUser]]></FromUserName>
    <CreateTime>123456789</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[LOCATION]]></Event>
    <Latitude>23.137466</Latitude>
    <Longitude>113.352425</Longitude>
    <Precision>119.385040</Precision>
    </xml>
  4. 第三方在收到地理位置上報信息之後,只需要回復success表明收到即可(不允許回復消息給粉絲)

2. javascript 怎麼獲得手機地理位置 比如經緯度

<script>
navigator.geolocation.getCurrentPosition(//該函數有如下三個參數
function(pos){//如果成果則執行該回調函數
alert(
'經度:'+pos.coords.latitude+
'緯度:'+pos.coords.longitude+
'高度:'+pos.coords.altitude+
'精確度(經緯):'+pos.coords.accuracy+
'精確度(高度):'+pos.coords.altitudeAccuracy+
'速度:'+pos.coords.speed
);
},function(err){//如果失敗則執行該回調函數
alert(err.message);
},{//附帶參數
enableHighAccuracy:false,//提高精度(耗費資源)
timeout:3000,//超過timeout則調用失敗的回調函數
maximumAge:1000//獲取到的地理信息的有效期,超過有效期則重新獲取一次位置信息
}
);
</script>


>> 參考Lecaf 同學的博文

>> 需要支持HTML5的瀏覽器才能支持

>> 哪怕支持HTML5的瀏覽器支持也不一定很好

3. js中如何得到客戶端的地理位置

那個湖南省長沙市是通過IP地址得到的
JS是客戶端腳本無法獲取IP地址的
必須要通過後台程序獲得到IP地址傳到前端 這樣才可以用JS來獲取到

4. js中如何得到客戶端的地理位置

手機WEB定位方法:代碼。
var getLocation = function (successFunc, errorFunc) { //successFunc獲取定位成功回調函數,errorFunc獲取定位失敗回調
//首先設置默認城市
var defCity = {
id: '000001',
name: '北京市',
date: curDateTime()//獲取當前時間方法
};
//默認城市
$.cookie('VPIAO_MOBILE_DEFAULTCITY', JSON.stringify(defCity), { expires: 1, path: '/' });
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;
//var map = new BMap.Map("container"); // 創建Map實例
var point = new BMap.Point(lon, lat); // 創建點坐標
var gc = new BMap.Geocoder();
gc.getLocation(point, function (rs) {
var addComp = rs.addressComponents;
var curCity = {
id: '',
name: addComp.province,
date: curDateTime()
};
//當前定位城市
$.cookie('VPIAO_MOBILE_CURRENTCITY', JSON.stringify(curCity), { expires: 7, path: '/' });
//alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street);
if (successFunc != undefined)
successFunc(addComp);
});
},
function (error) {
switch (error.code) {
case 1:
alert("位置服務被拒絕。");
break;
case 2:
alert("暫時獲取不到位置信息。");
break;
case 3:
alert("獲取位置信息超時。");
break;
default:
alert("未知錯誤。");
break;
}
var curCity = {
id: '000001',
name: '北京市',
date: curDateTime()
};
//默認城市
$.cookie('VPIAO_MOBILE_DEFAULTCITY', JSON.stringify(curCity), { expires: 1, path: '/' });
if (errorFunc != undefined)
errorFunc(error);
}, { timeout: 5000, enableHighAccuracy: true });
} else {
alert("你的瀏覽器不支持獲取地理位置信息。");
if (errorFunc != undefined)
errorFunc("你的瀏覽器不支持獲取地理位置信息。");
}
};
var showPosition = function (position) {
var lat = position.coords.latitude;
var lon = position.coords.longitude;
//var map = new BMap.Map("container"); // 創建Map實例
var point = new BMap.Point(lon, lat); // 創建點坐標
var gc = new BMap.Geocoder();
gc.getLocation(point, function (rs) {
var addComp = rs.addressComponents;
var curCity = {
id: '',
name: addComp.province,
date: curDateTime()
};
//當前定位城市
$.cookie('VPIAO_MOBILE_CURRENTCITY', JSON.stringify(curCity), { expires: 7, path: '/' });
//alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street);
});
};
var showPositionError = function (error) {
switch (error.code) {
case 1:
alert("位置服務被拒絕。");
break;
case 2:
alert("暫時獲取不到位置信息。");
break;
case 3:
alert("獲取位置信息超時。");
break;
default:
alert("未知錯誤。");
break;
}
var curCity = {
id: '000001',
name: '北京市',
date: curDateTime()
};
//默認城市
$.cookie('VPIAO_MOBILE_DEFAULTCITY', JSON.stringify(curCity), { expires: 1, path: '/' });
};.
前提要引入網路API:<script src="http://api.map..com/api?v=1.4" type="text/javascript"></script>。
2. PC端通過IP實現方法:

採用騰訊提供的介面,這個目前已經不能使用。
<script type="text/javascript" src="http://fw.qq.com/ipaddress"></script>
<script type="text/javascript">
document.write(IPData[0]); //顯示IP地址
document.write(IPData[2]); //顯示省
document.write(IPData[3]); //顯示市
</script>
3 . 獲取客戶端IP方法
<script>
var url = 'http://chaxun.1616.net/s.php?type=ip&output=json&callback=?&_=' + Math.random();
$.getJSON(url, function(data) {
alert(data.Ip);
});
</script>

5. 怎樣用JavaScript通過淘寶IP介面獲取IP地理位置在網站顯示城市名稱

這個用js是不行的。要用後台語言才可以。比如java、asp、php等。

6. 如何用JS實現:通過瀏覽器獲得用戶地理位置,計算預置地理位置與用戶地理位置之間的距離,返回數字文本

其實有了 Haversine 公式,兩點坐標之後就很簡單了。你提供的上海范圍太大,且沒有坐標,下面例子以上海虹橋機場為參考(緯度:31.2,經度:121.4)。


要從地名獲得它的經緯度應該需要有一個龐大的資料庫,這點沒有仔細研究過。谷歌地圖應該會提供此類的 API。你可以網路一下"經緯度查詢",有很多網站提供此功能。


測試的時候最好用 IE9 或 Opera 高版本,Firefox 和 Safari 有時會獲取不到地理位置,Chrome 會自動屏蔽本地文件。


<script type="text/javascript">
// Haversine 公式
function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) {
var R = 6371;
var dLat = deg2rad(lat2 - lat1);
var dLon = deg2rad(lon2 - lon1);
var a =
Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var d = R * c;
return d;
}
function deg2rad(deg) {
return deg * (Math.PI / 180);
}

// 上海虹橋機場經緯度
var lat = 31.2, lon = 121.4;

// 嘗試獲取地理位置
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(pos) {
var d = getDistanceFromLatLonInKm(
pos.coords.latitude,
pos.coords.longitude,
lat, lon).toFixed(2);
alert("當前位置距上海虹橋機場:" + d + "公里");
});
}
else {
alert("瀏覽器不支持 geolocation");
}
</script>




7. 在你怎麼實現js頁面一鍵定位,並且把獲取的地理位置顯示到文本框中

網路地圖API里有

8. 手機js頁面實現一鍵定位,並且把獲取的地理位置顯示到文本框中,如下圖,100分

手機js頁面實現一鍵定位,並且把獲取的地理位置顯示到文本框中代碼如下:

var getLocation = function (successFunc, errorFunc) { //successFunc獲取定位成功回調函數,errorFunc獲取定位失敗回調

//首先設置默認城市

var defCity = {

id: '000001',

name: '北京市',

date: curDateTime()//獲取當前時間方法

};

//默認城市

$.cookie('VPIAO_MOBILE_DEFAULTCITY', JSON.stringify(defCity), { expires: 1, path: '/' });

if (navigator.geolocation) {

navigator.geolocation.getCurrentPosition(function (position) {

var lat = position.coords.latitude;

var lon = position.coords.longitude;

//var map = new BMap.Map("container"); // 創建Map實例

var point = new BMap.Point(lon, lat); // 創建點坐標

var gc = new BMap.Geocoder();

gc.getLocation(point, function (rs) {

var addComp = rs.addressComponents;

var curCity = {

id: '',

name: addComp.province,

date: curDateTime()

};

//當前定位城市

$.cookie('VPIAO_MOBILE_CURRENTCITY', JSON.stringify(curCity), { expires: 7, path: '/' });

//alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street);

if (successFunc != undefined)

successFunc(addComp);

});

},

function (error) {

switch (error.code) {

case 1:

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

break;

case 2:

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

break;

case 3:

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

break;

default:

alert("未知錯誤。");

break;

}

var curCity = {

id: '000001',

name: '北京市',

date: curDateTime()

};

//默認城市

$.cookie('VPIAO_MOBILE_DEFAULTCITY', JSON.stringify(curCity), { expires: 1, path: '/' });

if (errorFunc != undefined)

errorFunc(error);

}, { timeout: 5000, enableHighAccuracy: true });

} else {

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

if (errorFunc != undefined)

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

}

};

var showPosition = function (position) {

var lat = position.coords.latitude;

var lon = position.coords.longitude;

//var map = new BMap.Map("container"); // 創建Map實例

var point = new BMap.Point(lon, lat); // 創建點坐標

var gc = new BMap.Geocoder();

gc.getLocation(point, function (rs) {

var addComp = rs.addressComponents;

var curCity = {

id: '',

name: addComp.province,

date: curDateTime()

};

//當前定位城市

$.cookie('VPIAO_MOBILE_CURRENTCITY', JSON.stringify(curCity), { expires: 7, path: '/' });

//alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street);

});

};

var showPositionError = function (error) {

switch (error.code) {

case 1:

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

break;

case 2:

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

break;

case 3:

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

break;

default:

alert("未知錯誤。");

break;

}

var curCity = {

id: '000001',

name: '北京市',

date: curDateTime()

};

//默認城市

$.cookie('VPIAO_MOBILE_DEFAULTCITY', JSON.stringify(curCity), { expires: 1, path: '/' });

};

9. D3.js 地理

D3 的方法不同於所謂的柵格方法,例如 Leaflet 和 Google Maps。這些 預渲染地圖特徵為圖像瓦片 ,它們從網路伺服器載入並在瀏覽器中拼湊在一起形成地圖。

通常,D3以 GeoJSON 的形式請求 矢量地理信息,並在瀏覽器中將其呈現為 SVG 或 Canvas

光柵地圖通常看起來更像傳統的印刷地圖,其中可以顯示很多細節(例如地名、道路、河流等),而不會影響性能。但是,使用矢量方法更容易實現動畫和交互等動態內容。(將這兩種方法結合起來也很常見。)

GeoJSON 是一種使用 JSON 格式表示地理數據的標准,完整的規范位於 geojson.org 。每個要素都由 幾何 (國家的簡單多邊形和廷巴克圖的一個點)和 屬性 組成。D3 在渲染 GeoJSON 時會處理大部分細節,因此只需對 GeoJSON 有基本的了解即可開始使用 D3 映射。

投影函數採用經度和緯度坐標(以數組的形式 [lon, lat] )並將其轉換為 x 和 y 坐標。投影數學可以變得相當復雜,但幸運的是 D3 提供了大量的投影函數。

地理路徑生成器是一個接受 GeoJSON 對象並將其轉換為 SVG 路徑字元串的函數。可以使用該方法創建生成器 .geoPath 並使用投影功能對其進行配置。

GeoJSON 是一種基於 JSON 的結構,用於指定地理數據。通常,它是使用mapshaper、ogr2ogr、shp2json或QGIS等工具從 shapefile 數據(一種廣泛用於 GIS 領域的地理空間矢量數據格式)轉換而來的。

shapefile 的一個來源是Natural Earth,如果開始,我建議嘗試使用mapshaper來導入 shapefile 並導出為 GeoJSON。它還可以按屬性過濾(例如,如果您想按大陸過濾國家)。

可以在不詳細了解 GeoJSON 規范的情況下創建地圖,因為諸如 mapshaper 和 D3 之類的工具可以很好地抽象出細節。

到目前為止,我們已經在示例文件中嵌入了 GeoJSON 對象。實際上,GeoJSON 將位於一個單獨的文件中,並使用 ajax 請求載入。但在本章的其餘部分,我們將使用以下方式載入 GeoJSON 文件:

d3.geoInterpolate()函數接受 0 到 1 之間的輸入並在兩個 [lon, lat] 位置之間進行插值:

可以使用 d3.geoContains 接受 GeoJSON 功能和 [lon, lat] 數組並返回布爾值來檢查滑鼠或觸摸事件是否發生在要素邊界內(SVG渲染情況下有效)

10. 百度地圖api如何根據城市名或經緯度獲取當前城市東西經南北緯范圍 js

Geocoding API包括地址解析和逆地址解析功能。

地址解析是指,由詳細到街道的結構化地址得到網路經緯度信息,且支持名勝古跡、標志性建築名稱直接解析返回網路經緯度。例如:「北京市海淀區中關村南大街27號」地址解析的結果是「lng:116.31985,lat:39.959836」,「網路大廈」地址解析的結果是「lng:116.30815,lat:40.056885」
逆地址解析是指,由網路經緯度信息得到結構化地址信息。例如:「lat:31.325152,lng:120.558957」逆地址解析的結果是「江蘇省蘇州市虎丘區塔園路318號」。注意:

1.因為Geocoding和反Geocoding使用的門址數據以及演算法都不是一樣的,所以會出現不能一一對應的現象。

2.解析過程中可能會出現一對坐標值對應多個地址門牌信息,本介面將返回距離坐標點最近的一個地址門牌信息。
使用限制

目前無任何使用限制。請申請key,然後使用該介面。
如何使用

第一步,申請key,點擊這里獲取密鑰,申請key需要注冊網路賬號;

第二步,拼寫發送http請求的url,注意需使用第一步申請的key;

第三步,接收http請求返回的數據(支持json和xml格式)。
服務地址
地址解析:根據地址獲取坐標

http://api.map..com/geocoder?address=地址&output=輸出格式類型&key=用戶密鑰&city=城市名
逆地址解析:根據坐標獲取地址

http://api.map..com/geocoder?location=緯度,經度&output=輸出格式類型&key=用戶密鑰

備註:

1. city屬於可選參數,通常情況可以不使用,若解析無結果,請嘗試增加此欄位。

2. 支持名勝古跡、標志性建築物名稱解析返回網路經緯度坐標,如address=「網路大廈」。

3. 支持使用「*路與*路交叉口」方式解析返回網路經緯度坐標,若地址庫中存在該地址描述,返回網路經緯度坐標。

4. 若解析status欄位為OK,若結果內容為空,原因分析及可嘗試方法:
地址庫里無此數據,本次結果為空。
加入city欄位重新解析;
將過於詳細或簡單的地址更改至省市區縣街道重新解析;

5. 特別提醒:逆地址解析location參數傳入的參數格式是(緯度lat,經度lng)。
介面參數
參數 是否必須 默認值 格式舉例 含義
output 否 json json或xml 輸出格式為json或者xml
address 是 無 北京市海淀區上地十街10號 根據指定地址進行坐標的反定向解析
location 是 無 38.76623,116.43213
lat<緯度>,lng<經度> 根據指定坐標來進行地址的解析
city 否 「北京市」 「廣州市」 地址所在的城市名
key 是 無 用戶申請注冊的key

上表中address和location兩個欄位如果同時出現,則優先選擇address執行地理編碼功能。對於address欄位可能會出現中文或其它一些特殊字元(如:空格),所以對於類似的字元都要進行編碼處理,編碼成 UTF-8 字元的二字元十六進制值,凡是不在下表中的字元都要進行編碼。
字元集合 字元
URL非保留字 a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 – _ . ~
URL保留字 ! * 『 ( ) ; : @ & = + $ , / ? % # [ ]

附註:

(1) javascript中一般採用encodeURIComponent函數對特殊字元進行編碼。

(2) Java中可以使用函數URLEncoder.encode對特殊字元進行編碼。

(3) C#中可以使用函數HttpUtility.UrlEncode對特殊字元進行編碼。

(4) php中可以使用函數urlencode對特殊字元進行編碼。
返回數據說明

返回結果(地址解析的結果)

{status: '字元串狀態常量', 取值如下:
//OK 成功
INVILID_KEY 非法密鑰
INVALID_PARAMETERS 非法參數,參數錯誤時候給出。
result: {
location: {
lat: 緯度:數值,
lng: 經度:數值
},
precise:』位置的附加信息,是否精確查找』(1為精確查找,0為不精確查找),
confidence: 可信度,
level:'級別'
},
}

返回結果(反地址解析的結果)

{status: '字元串狀態常量', 取值如下:
//OK 成功
INVILID_KEY 非法密鑰
INVALID_PARAMETERS 非法參數,參數錯誤時候給出。
result: {
location: {
lat: 緯度:數值,
lng: 經度:數值
},
formatted_address: 『詳細地址描述』,
business: '周圍商圈',
addressComponent:{
city:』城市名稱』,
district: 『區縣名稱』,
province:』省份名稱』,
street: 『街道名稱』,
streetNumber: '門牌號碼'
},
cityCode: '城市代碼'
}
}

介面示例

根據詳細地址獲取坐標

http://api.map..com/geocoder?address=%E4%B8%8A%E5%9C%B0%E5%8D%81%E8%A1%9710%E5%8F%B7&output=json&key=

//根據「上地十街10號」返回坐標「lng:116.307175, lat:40.057098」,以json格式輸出

http://api.map..com/geocoder?address=%E4%B8%8A%E5%9C%B0%E5%8D%81%E8%A1%9710%E5%8F%B7&output=xml&key=

//根據「上地十街十號」返回坐標「lng:116.307175, lat:40.057098」,以xml格式輸出
在指定城市內檢索詳細地址的坐標

http://api.map..com/geocoder?address=%E4%B8%8A%E5%9C%B0%E5%8D%81%E8%A1%9710%E5%8F%B7&output=json&key=&city=%E5%8C%97%E4%BA%AC%E5%B8%82

// 在北京市內根據「上地十街10號」返回坐標「lng:116.307175, lat:40.057098」,以json格式輸出

http://api.map..com/geocoder?address=%E4%B8%8A%E5%9C%B0%E5%8D%81%E8%A1%9710%E5%8F%B7&output=xml&key=&city=%E5%8C%97%E4%BA%AC%E5%B8%82

// 在北京市內根據「上地十街10號」返回坐標「lng:116.307175, lat:40.057098」,以json格式輸出
根據特定建築物獲取它的坐標

http://api.map..com/geocoder?address=%E7%99%BE%E5%BA%A6%E5%A4%A7%E5%8E%A6&output=json&key= //根據「網路大廈」名稱返回坐標「lng:116.307175, lat:40.057098」,以json格式輸入

http://api.map..com/geocoder?address=%E7%99%BE%E5%BA%A6%E5%A4%A7%E5%8E%A6&output=xml&key= //根據「網路大廈」名稱返回坐標「lng:116.307175, lat:40.057098」,以xml格式輸入
根據「*路與*路交叉路口」類型地址描述獲得它的坐標

http://api.map..com/geocoder?address=%E5%8C%97%E4%B8%80%E7%8E%AF%E8%B7%AF%E5%92%8C%E9%98%9C%E9%98%B3%E8%B7%AF%E7%9A%84%E4%BA%A4%E5%8F%89%E8%B7%AF%E5%8F%A3&output=json&key=

//根據「北一環路和阜陽路的交叉路口」名稱返回坐標「lng:117.294364, lat:31.885558」,以json格式輸入

http://api.map..com/geocoder?address=%E5%8C%97%E4%B8%80%E7%8E%AF%E8%B7%AF%E5%92%8C%E9%98%9C%E9%98%B3%E8%B7%AF%E7%9A%84%E4%BA%A4%E5%8F%89%E8%B7%AF%E5%8F%A3&output=xml&key=

//根據「北一環路和阜陽路的交叉路口」名稱返回坐標「lng:117.294364, lat:31.885558」,以xml格式輸入
根據坐標獲取它的地址

http://api.map..com/geocoder?output=json&location=39.983424,%20116.322987&key=

//解析「lat:39.983424, lng:116.322987」坐標返回「北京市海淀區中關村大街27號1101-08室」,以json格式輸出

http://api.map..com/geocoder?output=xml&location=39.983424,%20116.322987&key=

//解析「lat:39.983424, lng:116.322987」坐標返回「北京市海淀區中關村大街27號1101-08室」,以xml格式輸出

網路地址http://developer..com/map/geocoding-api.htm

閱讀全文

與js如何獲取地理位置相關的資料

熱點內容
word中化學式的數字怎麼打出來 瀏覽:740
乙酸乙酯化學式怎麼算 瀏覽:1406
沈陽初中的數學是什麼版本的 瀏覽:1353
華為手機家人共享如何查看地理位置 瀏覽:1045
一氧化碳還原氧化鋁化學方程式怎麼配平 瀏覽:886
數學c什麼意思是什麼意思是什麼 瀏覽:1411
中考初中地理如何補 瀏覽:1300
360瀏覽器歷史在哪裡下載迅雷下載 瀏覽:703
數學奧數卡怎麼辦 瀏覽:1388
如何回答地理是什麼 瀏覽:1025
win7如何刪除電腦文件瀏覽歷史 瀏覽:1058
大學物理實驗干什麼用的到 瀏覽:1487
二年級上冊數學框框怎麼填 瀏覽:1701
西安瑞禧生物科技有限公司怎麼樣 瀏覽:974
武大的分析化學怎麼樣 瀏覽:1250
ige電化學發光偏高怎麼辦 瀏覽:1339
學而思初中英語和語文怎麼樣 瀏覽:1651
下列哪個水飛薊素化學結構 瀏覽:1425
化學理學哪些專業好 瀏覽:1488
數學中的棱的意思是什麼 瀏覽:1059