javascript实现经纬度与地址的互转
最近项目中会用到将地址转换为经纬的。从出来,还一直未遇到过这类问题,下来自己提前学习了,将自己所学的记录在案。
在网上找了很多资料,最后确定了,百度的API,有实现相关的接口(API地址)。使用API时,需要申请一个ak,才能正常的进行访问。
上图是一个原理,即当我们传入对应的值时,返回对应的信息。这里我现在了返回json对象,对于XML操作有点复杂,在此省略。注:在用ajax调用时,dataType一定一定为JSONP,否则,你就慢慢找错吧(这也是花了我很多时间的地方,郁闷了很久)。这里为JSONP是因为这里跨域了。好了,下面就直接上代码了:
<form id="form1" runat="server">
<div style="width: 500px; height: 100px; border: 1px solid; float: left;">
<span style="width: 60px; margin: 12px 0 6px 20px; font-size: 14px; color: #808080;">地址:</span>
<input type="text" id="address" placeholder="成都市金牛区一环路西三段抚琴东北路抚林巷" style="width: 300px; height: 30px; margin: 20px 0 0 0;" />
<input type="button" id="search_address" value="搜索" style="width: 60px; height: 30px;" />
<br />
<span id="lng" style="width: 60px; margin: 12px 0 6px 20px; font-size: 14px; color: #808080;">经度:</span><br />
<span id="lat" style="width: 60px; margin: 12px 0 6px 20px; font-size: 14px; color: #808080;">纬度:</span>
</div>
<div style="width: 500px; height: 500px; border: 1px solid; float: left; margin-left: 200px;">
<span style="width: 60px; margin: 12px 0 6px 20px; font-size: 14px; color: #808080;">经度:</span>
<input type="text" value="" placeholder="104.05033320413" id="txtlng" style="width: 300px; height: 20px; margin: 20px 0 0 0;" />
<br />
<span style="width: 60px; margin: 12px 0 6px 20px; font-size: 14px; color: #808080;">纬度:</span>
<input type="text" value="" placeholder="30.68458575873" id="txtlat" style="width: 300px; height: 20px; margin: 20px 0 0 0;" />
<br />
<input type="button" id="search_lng_lat" value="搜索" style="height: 30px; margin-top: 12px; margin-left: 220px;" /><br />
<span id="spanadderss" style="width: 60px; margin: 12px 0 6px 20px; font-size: 14px; color: #808080;">地址:</span>
</div>
</form>
$(document).ready(function () {
/*
根据地址信息获取经纬度,返回json对象:
status Int 返回结果状态值,成功返回0。
location object 经纬度坐标
lat float 纬度值
lng float 经度值
precise Int 位置的附加信息,是否精确查找。1为精确查找,0为不精确。
confidence Int 可信度
level string 地址类型 {
status: 0,
result:
{
location:
{
lng: 116.30814954222,
lat: 40.056885091681
},
precise: 1,
confidence: 80,
level: "商务大厦"
}
}
*/
$('#search_address').click(function () {
var address = $.trim($('#address').val());
if (address != undefined && address != '') {
var url = 'http://api.map.baidu.com/geocoder/v2/?ak=eIxDStjzbtH0WtU50gqdXYCz&output=json&address=' + encodeURIComponent(address);
//根据地点名称获取经纬度信息
$.ajax({
type: "POST",
url: url,
dataType: "JSONP",
success: function (data) {
if (parseInt(data.status) == 0) {
$("#lng").html("经度:" + data.result.location.lng);
$("#lat").html("纬度:" + data.result.location.lat);
}
}
});
}
});
/*
根据经纬度获取详细地址及其周边信息,返回json对象:
status constant 返回结果状态值, 成功返回0,其他值请查看附录。
location
lat 纬度坐标
lng 经度坐标
formatted_address 结构化地址信息
business 所在商圈信息,如 "人民大学,中关村,苏州街"
addressComponent city 城市名
district 区县名
province 省名
street 街道名
street_number 街道门牌号
pois(周边poi数组)
addr 地址信息
cp 数据来源
distance 离坐标点距离
name poi名称
poiType poi类型,如’ 办公大厦,商务大厦’
point poi坐标{x,y}
tel 电话
uid poi唯一标识
zip 邮编
*/
$('#search_lng_lat').click(function () {
var lng = $.trim($('#txtlng').val());
var lat = $.trim($('#txtlat').val());
var url = 'http://api.map.baidu.com/geocoder/v2/?ak=eIxDStjzbtH0WtU50gqdXYCz&output=json&pois=1&location=' + lat + "," + lng;
$.ajax({
type: "POST",
url: url,
dataType: "JSONP",
success: function (data) {
if (parseInt(data.status) == 0) {
var result = "地址:" + data.result.formatted_address + "</br>";
result += "省名:" + data.result.addressComponent.province + "</br>";
result += "城市名:" + data.result.addressComponent.city + "</br>";
result += "区县名:" + data.result.addressComponent.district + "</br>";
result += "街道名:" + data.result.addressComponent.street + "</br>";
result += "街道门牌号:" + data.result.addressComponent.street_number + "</br>";
result += "周边信息:</br>";
for (var i = 0; i < data.result.pois.length; i++) {
result += "地址信息:" + data.result.pois[i].addr
+ ",数据来源:" + data.result.pois[i].cp
+ ",离坐标点距离:" + data.result.pois[i].distance
+ ",poi名称:" + data.result.pois[i].name
+ ",poi类型:" + data.result.pois[i].poiType
+ ",poi坐标x:" + data.result.pois[i].point.x
+ ",poi坐标y:" + data.result.pois[i].point.y
+ ",电话:" + data.result.pois[i].tel
+ ",poi唯一标识:" + data.result.pois[i].uid
+ ",邮编:" + data.result.pois[i].zip + "</br>";
}
$('#spanadderss').html(result);
}
}
});
});
});
代码中已经有详细的解释了,若果实在不懂的话,就点击API地址,这里面更详细。这里只是个人的知识整理,只做为一个记录,若对你能有什么帮助,那我也感到十分高兴。
javascript实现经纬度与地址的互转的更多相关文章
- 百度地图JavaScript API经纬度查询-MAP
百度地图JavaScript API经纬度查询-MAP-ABCDEFGHIJKMHNOPQRSTUVWXYZ: 搜索:<input type="text" size=&quo ...
- JS根据经纬度获取地址信息
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- Javascript版选择下拉菜单互移且排序
效果图如下: 代码如下: <html> <head> <title>Javascript版选择下拉菜单互移且排序</title> <meta ht ...
- 百度地图经纬度和地址互转(Java代码)
这是基于springmvc+mybatis 的一个controller.如果不是这个框架,可以把方法实体抽到自己写的一个类中,然后再测试 package com.uwitec.controller.s ...
- Google Map API v2 (三)----- 地图上添加标记(Marker),标记info窗口,即指定经纬度获取地址字符串
接上篇 http://www.cnblogs.com/inkheart0124/p/3536322.html 1,在地图上打个标记 private MarkerOptions mMarkOption; ...
- 使用javascript生成当前博文地址的二维码图片
前面的话 在电脑端发现一篇好的博文,想在手机上访问.这时,就必须打开手机浏览器输入长长的URL地址才行,非常不方便.如果在博客标题的后面跟一张小的图片,点击该图片后,出现一张二维码的大图,然后再通过手 ...
- JavaScript获取客户端IP地址
1. 第三方接口 1) 这里提供一个搜狐接口的地址:http://pv.sohu.com/cityjson?ie=utf-8 ,将这个js引入到页面即可得到returnCitySN. 2) api.i ...
- 利用python解析地址经纬度和利用经纬度定位地址
解析地址经纬度 from geopy.geocoders import Nominatim try: geolocator = Nominatim() location = geolocator.ge ...
- javascript 之获取 百度地址参数方法
原生态的JavaScript对DOM的操作 比jquery更方便,特别是当没有id 或class 可以获取的时候,只有用tag名获取 HTML DOM Element 对象操作 http://ww ...
随机推荐
- express 学习笔记
首先把这个库加载下来 npm install -g express 这样会安装它所有依赖包,这个非常恐怖.这个框架要依赖这么多外来的东西,如果有一个不与时俱进就会拖累整个框架的质量. C:\windo ...
- shell's glob
[shell's glob] basic glob example: range glob example: 参考: http://bash.cumulonim.biz/glob.html
- POJ 1410 Intersection(判断线段交和点在矩形内)
Intersection Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9996 Accepted: 2632 Desc ...
- RS-232-C串口通讯协议解析(硬件接口协议)
http://www.dz3w.com/info/interface/0075524.html http://wenku.baidu.com/view/02cc247c27284b73f24250e3 ...
- arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])
测试方法 function test(){ var arr = [0,1,2,3]; arr.splice(1,1,'a');//case console.dir(arr); } case1: arr ...
- Spring REST实践之Error Handling
Error Responses 在REST API中,HTTP状态码有非常重要的作用.API开发者应该坚持为每一个请求返回一个正确合适的状态码,而且应该在响应body中包含有用的.细粒度的错误信息.这 ...
- ASP.NET MVC- Upload File的例子
上传文件是一项基本功能,一定要了解的.先来看一下使用ASP.NET MVC实现简单的上传. 一.简单的例子 Controller的例子 public ActionResult UploadDemo() ...
- 当WEB站点应用程序池标识为ApplicationPoolIdentity,出现运行错误时的解决方法
对于数据库文件加Authenticated Users用户,并授予完全权限.
- JedisPoolConfig配置
JedisPoolConfig config = new JedisPoolConfig(); //连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true config. ...
- (算法)N皇后问题
题目: 八皇后问题:在8 X 8的国际象棋上摆放八个皇后,使其不能相互攻击,即任意两个皇后不得处于同一行,同一列或者同意对角线上,求出所有符合条件的摆法. 思路: 1.回溯法 数据结构: 由于8个皇后 ...