Loading [MathJax]/jax/output/CommonHTML/config.js
部署DeepSeek模型,进群交流最in玩法!
立即加群
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >谷歌地图地理解析

谷歌地图地理解析

作者头像
全栈程序员站长
发布于 2022-09-07 01:58:45
发布于 2022-09-07 01:58:45
1.8K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

微信搜索:“二十同学” 公众号,欢迎关注一条不一样的成长之路

地址解析就是将地址(如:贵州省贵阳市)转换为地理坐标(如经度:106.71,纬度:26.57)的过程。

地理反解析和上面的过程相反是将地理坐标(如纬度:26.57,经度:106.71)转换为地址(中国贵州省贵阳市南明区翠微巷7号 邮政编码: 550002)的过程。

受当地法律限制及各方面原因,国内很多地图并不包含地理解析和反解析功能(地理解析和反解析功能功能不够强悍),Google永远是最棒的。废话不多说要使用到Google map 地理解析和反解析功能,我们需要了解google.maps.Geocoder类,谷歌地图给我们提供了强大的api,下面我们来实现

1.初始化地图(最基本的,不解释)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//初始化地图
var map = new google.maps.Map(document.getElementById("map_canvas"),{
        center : new google.maps.LatLng(26.57, 106.72),
        zoom : 8,
        mapTypeId : google.maps.MapTypeId.ROADMAP
});

2.实例化谷歌Geocoder服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//实例化Geocoder服务
var geocoder = new google.maps.Geocoder();

这样我们就可以进行地理解析和反解析了,使用代码:.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
geocoder.geocode(request:GeocoderRequest, callback:function(Array., GeocoderStatus))

i. 数据请求:其中需要进行请求的数据GeocoderRequest可为4种属性:

属性

类型

描述

address

string

需要解析的地名. 可选.

bounds

LatLngBounds

经纬度搜索范围. 可选.(我没有具体试用过)

location

LatLng(注意类型)

需要解析的经纬度. 可选.

region

string

国家代码. 可选.(我没有具体试用过)

对于解析我们使用address,反解析使用location(注意传入的类型),请求的话,至少选择一种。

ii:结果处理:而对于回掉函数(即解析后返回的处理函数)包含两个内容,GeocoderResult(解析结果,数组类型)和GeocoderStatus(解析状态)

1.解析状态是使用Geocoder()进行解析后返回的状态,包含5种:

ERROR(谷歌地图服务可能出错)

INVALID_REQUEST(GeocoderRequest无效,即输入的请求是错误的,可能是没有选择,或者属性写错)

OK(解析完成,并有相应数据)

OVER_QUERY_LIMIT(响应超时)

REQUEST_DENIED(网页被禁止geocoder解析)

UNKNOWN_ERROR(未知错误)

ZERO_RESULTS(零结果)

我们能用的就是状态为OK的情况

2.解析结果

属性

类型

描述

address_components

Array.<GeocoderAddressComponent>

GeocoderAddressComponents数组

formatted_address

string

格式化后的最佳匹配地址(地名可小到街道)

geometry

GeocoderGeometry

GeocoderGeometry 对象

types

Array.

一个表示返回的地理编码元素的类型的字符串数组

其中每一次解析成功后都会有上面的信息,我们最需要的就两样formatted_address和geometry。而address_components是一个地名数组,包含long_name(比如只返回省市名称),short_name和types,可以自己去试一下。

a. 格式化后的地名formatted_address,只需直接调用即可b.geometry返回一个GeocoderGeometry 对象,其中又包含有4个属性

Properties

Type

Description

bounds

LatLngBounds

解析出来的精确的界限

location

LatLng

纬度/经度坐标

location_type

GeocoderLocationType

返回的location类型

viewport

LatLngBounds

解析结果的视图范围

至此,所有关于地理解析和反解析就差不多说明完了,具体api参见https://developers.google.com/maps/documentation/javascript/reference#Geocoder

下面我们来实例一下实例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="http://maps.google.com/maps/api/js?sensor=false&libraries=places" type="text/javascript"></script>
<title>谷歌地图地理解析和反解析geocode.geocoder详解</title>
<meta name="author" content="yanue" />
<meta name="copyright" content="powered by yanue" />
<link rel="site" href="http://map.yanue.net/" />
<script type="text/javascript">
window.onload = function() {
//初始化地图
var map = new google.maps.Map(document.getElementById("map_canvas"),{
        center : new google.maps.LatLng(26.57, 106.72),
        zoom : 8,
        mapTypeId : google.maps.MapTypeId.ROADMAP
});
//实例化Geocoder服务
var geocoder = new google.maps.Geocoder();

//1.地理解析过程
//请求数据GeocoderRequest为address,值为'贵阳'
geocoder.geocode({address:'贵阳'},function geoResults(results, status){
  //这里是回掉函数(即结果处理函数)
  //状态为Ok说明有结果
  if (status == google.maps.GeocoderStatus.OK) {
        //一般情况下会有多个结果
        //第一个结果为最佳匹配的结果(匹配地名最全的结果),这里只去第一个,其他的可以根据需要自己循环出来
        //格式化过后的地址
        alert('地理解析结果:'+results[0].formatted_address);
        //geometry是一个包含bounds(界限),location(纬度/经度坐标),location_type和viewport(视图范围)
        //获取解析后的经纬度     
                alert('地理解析结果:'+results[0].geometry.location);
  }else{
    alert(":error " + status);
  }
});

//2.地理反解析过程
//请求数据GeocoderRequest为location,值类型为LatLng因此我们要实例化经纬度
geocoder.geocode({location:new google.maps.LatLng(26.57, 106.72)},function geoResults(results, status){
  //这里处理结果和上面一模一样
  if (status == google.maps.GeocoderStatus.OK) {
        alert('地理反解析结果:'+results[0].formatted_address);
                alert('地理反解析结果:'+results[0].geometry.location);
  }else{
    alert(":error " + status);
  }
});
}
</script>
</head>
<body>
        <div id="map_canvas" style='width: 300px; height: 200px;'></div>
</body>
</html>

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/147791.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
谷歌、腾讯、百度相应API批量获取地理位置坐标信息及其优缺点
目录: 申请ak 批量获取地理位置 优缺点对比 目的:通过给定的地理位置名称(如:北京市海淀区上地十街十号),获取经纬度信息。 1、申请ak 以百度Geocoding API为例: http://lb
Echo_fy
2018/06/20
2.2K0
如何通过经纬度获取地址信息?
摘要 Google Maps API Web Services,是一个为您的地图应用程序提供地理数据的 Google 服务的 HTTP 接口集合。具体包括:Google Geocoding API、Google Directions API、Google Elevation API、Google Places API。本文将探讨如何通过Google Geocoding API服务来获取地址信息。 ----  目录 什么是网络服务? 区分地址解析与反地址解析 地址查询(反地址解析)请求 地址查询(反地址解析)
刘皓
2018/04/03
8K0
如何通过经纬度获取地址信息?
利用python和百度地图API实现数据地图标注
地址:http://developer.baidu.com/map/jsdemo.htm#c1_19
IT派
2018/07/30
4.9K0
利用python和百度地图API实现数据地图标注
Python pprint | 超级好用的Python库,漂亮的打印,让json数据提取体验更好
对于这种数据可以利用 json 模块将 json 字符串直接转化为字典格式的数据,字典为 {key:value} 型,之后再对应提取我们想要的字段。
叶庭云
2022/05/09
3.1K0
Python pprint | 超级好用的Python库,漂亮的打印,让json数据提取体验更好
HTML5的Geolocation API
Geolocation API用于将用户当前地理位置信息共享给信任的站点,这涉及用户的隐私安全问题,所以当一个站点需要获取用户的当前地理位置,浏览器会提示用户是“允许” or “拒绝”。
meteoric
2018/11/15
1.7K0
Google Map
上一章介绍了如何使用Android的GPS来获取设备的定位信息,但这种方式得到的定位信息只不过是一些数字的经度、纬度值,如果这些经度、纬度值不能以更加形象、直观的方式显示出来,对于大部分普通用户而言,这些数据几乎没有任何价值。要想让这些经纬度值“派上”用场,就需要用到本章中介绍到的Google Map服务。在本章中我们首先对Google Map进行简单的介绍,然后介绍Android中进行Google Map开发需要的准备工作,最后通过一系列的案例讲解了在Android中进行Google Map开发的方法及技巧。
张哥编程
2024/12/17
7730
Google Map
《Android Studio开发实战 从零基础到App上线(第2版)》常见问题解答
问题:第17页“1.5.2 安装SVN工具”这节里面提到的SVN仓库地址要填什么? 回答:SVN仓库地址指的是SVN服务器地址,如果你们单位有专人负责svn代码管理,可向他(svn管理员)咨询这个svn地址。如果你的代码只在自己电脑运行,不需要提交给服务器备份,那么建议略过svn这部分。
aqi00
2019/03/04
9860
uni-app 微信小程序中关于 map 地图使用案例分享
 这篇文章,我将带领大家使用微信内置地图详细讲解关于如何配置地图、打开地图和使用地图。
跟着飞哥学编程
2022/12/02
6.1K0
vue+腾讯位置服务 实现坐标拾取器功能
以上代码使用的是jsapi功能,目前对应功能已升级JavaScript API GL,地址解析功能可直接调取接口使用,欢迎大家体验!
腾讯位置服务
2020/11/13
1.6K0
iOS小技能:地理编码(地址转坐标)
用户在高德地图官网申请Web服务API类型Key:https://lbs.amap.com/dev/
公众号iOS逆向
2022/08/22
1.5K0
iOS小技能:地理编码(地址转坐标)
前端调用Cesium加载三维模型全攻略
想象一下,地球在你眼前旋转,上面还有各种3D模型,是不是很酷?Cesium是一个超酷的库,专门用来创建超炫的3D地球和地图。好,言归正传,今天这篇文章就分享一下前端如何使用Cesium加载三维模型。
china马斯克
2024/08/01
5530
高德地图API简单使用——地名转经纬度
之前小菌也分享过一些经典爬虫的案例,但有小伙伴私聊小菌希望分享一些常用的python技术。于是这篇博客小菌打算分享高德地图简单API的使用。
大数据梦想家
2021/01/22
1.6K0
高德地图API简单使用——地名转经纬度
百度地图JavaScript API获取用户当前经纬度和详细地理位置,反之通过详细地理位置获取当前经纬度
  前端时间刚好使用了百度地图的js api定位获取用户当前经纬度并获取当前详细位置和通过当前用户详细地理位置换取用户当前经纬度坐标的功能,为了方便下次找起来方便一些自己在这里记录一下,希望也能够帮助到有需要的童鞋们!
追逐时光者
2019/08/28
7.5K0
左手用R右手Python系列——百度地图API调用与地址解析/逆解析
地理位置信息的解析与逆解析可能是我们在分析地理位置数据时所面临的最棘手的问题了,好在现在很多主流的在线 地图厂商地给开发者提供了免费的API接口调用。 这一篇以百度地图API为例,演示如何在R语言以及Python中通过调用API实现地理位置的解析与逆解析,即将地址转换为具体经纬度,将经纬度转换为具体的地址。 免费API调用需要开发者自己在百度地图开放平台上注册APPkey,每日限调6000次,因为是免费的,所有人都可以申请注册,注册地址如下。 http://lbsyun.baidu.com/apiconso
数据小磨坊
2018/04/12
1.8K0
腾讯位置服务+element-ui 实现地址搜索&marker标记功能
前言 小程序项目需要实现输入地址搜索解析出相应经纬度并在地图上打点标注。 [93d435f9bd1041339fda521a67b3ae72~tplv-k3u1fbpfcp-watermark.ima
腾讯位置服务
2020/12/25
1.8K0
用编程赋能工作系列——高德地图开发
作为菜鸟分析师一枚,日常工作中需要处理大量地理位置相关(如城市、辖区、街道、商场、楼宇等)数据。分析报告中总是用吐了的柱形图、条形图,不仅自己看着辣眼睛,老板也审美疲劳。
数据小磨坊
2020/02/25
1.4K0
转:谷歌离线地图基础[通俗易懂]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/05
1.4K0
Leaflet 与高德继续碰撞火花!
本文来自读者厦门大学的李康国研究生投稿,讲述高德和 Leaflet 结合绘制地图。也欢迎其他小伙伴来分享你们的经验!
庄闪闪
2021/10/08
3.4K0
Kotlin入门(32)网络接口访问
手机上的资源毕竟有限,为了获取更丰富的信息,就得到辽阔的互联网大海上冲浪。对于App自身,也要经常与服务器交互,以便获取最新的数据显示到界面上。这个客户端与服务端之间的信息交互,基本使用HTTP协议进行通信,即App访问服务器的HTTP接口来传输数据。HTTP接口调用在Java代码中可不是一个轻松的活,开发者若用最基础的HttpURLConnection来编码的话,至少要考虑以下场景的处理: 1、HTTP的请求方式是什么,是GET还是POST还是PUT还是DELETE? 2、HTTP的连接超时时间是
aqi00
2019/01/18
1.9K0
Android Google Maps
  在国内你选择的SDK可以是高德、百度、腾讯等,但在国外,你首选肯定是谷歌,因此要进行Google地图的开发你首先要解决下面三个问题
晨曦_LLW
2024/11/28
6100
Android Google Maps
推荐阅读
相关推荐
谷歌、腾讯、百度相应API批量获取地理位置坐标信息及其优缺点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验