导航:首页 > 地理科目 > 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