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 ...
随机推荐
- HDFS的Shell
调用文件系统(FS)Shell命令应使用 $HADOOP_HOME/bin/hadoop fs 的形式. 所有的FS Shell命令使用URI路径作为参数. URI格式是scheme://author ...
- dedecms lnmp 环境搭建。备忘录非教程
ssh链接到linux服务器,我用的centos 6.5 64位的. #设置dns,ect/reserv.conf 设置,注释掉原来的nameserver,添加nameserver=8.8.8.8访问 ...
- Wicket Hello World Example
A simple hello world example in Wicket, show the basic structure of Wicket web application. Tools an ...
- C# rmi例子
接口定义 实体定义,注意需要序列化 using System; namespace Interface { [Serializable] public class DataEntity { publi ...
- Ubuntu下Android编译环境的配置
从安装操作系统到编译程序结束,过程大致如下. 1. Ubuntu Linux操作系统安装软件包.使用 Ubuntu 14.04 Desktop系统.安装Linux系统到VMWare虚拟机上. 2. 完 ...
- STL学习系列七:优先级队列priority_queue容器
1.简介 最大值优先级队列.最小值优先级队列 优先级队列适配器 STL priority_queue 用来开发一些特殊的应用,请对stl的类库,多做扩展性学习 这里给个例子: #include< ...
- .Net实现的批量删除(使用了repeater控件)
前台 <asp:Repeater ID="Repeater1" runat="server"> <HeaderTemplate> < ...
- Castle学习笔记----初探IOC容器
通常IOC实现的步骤为-->建立容器-->加入组件-->获取组件-->使用组件. 1.建立容器 建立容器也就是IWindsorContainer.接着我门要向容器中注册服务,并 ...
- Castle IOC容器构建配置详解(二)
主要内容 1.基本类型配置 2.Array类型配置 3.List类型配置 4.Dictionary类型配置 5.自定义类型转换 一.基本类型配置 在Castle IOC的配置文件中,大家可能都已经注意 ...
- strlen与sizeof的区别 [转]
转自:http://www.cppblog.com/liangbo/archive/2006/10/06/13394.html 1.sizeof操作符的结果类型是size_t,它在头文件中typede ...