基于 Bing Map 和 Leaflet 实现地理位置解析并投图

leaflet 调用bing地图_leaflet结合geoserver利用WFS服务实现图层编辑功能(附源码下载)... 前言leaflet 入门开发系列环境知识点了解:leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等leaflet 在线例子leaflet 插件,leaflet 的插件库,非常有用内容概览leaflet结合geoserver利用WFS服务实现图层编辑源代码demo下载效果图如下:本篇主要是参照leaflet结合geoserver利用WFS服务实现图层新增功能(附源码下... 阅读详情

1. 项目需求

给定一组地点的英文名称,将其解析为经纬度坐标值并在地图中展示。

2. 项目实现

2.1. 地点名称的解析

结构化地址和经纬度之间的相互转化,即被称为 geocode 功能。常见的解决方案有:

  • 调用地图服务商的API请求

    高德地图、百度地图等国内地图服务商:只支持国内地址

    Google Map:脑测效果最好,但是免费额度有限,且需要用支持外币的信用卡申请,遂弃

    Open Cage 等:免费,然而单日访问上限约千次,访问频率受限,不好用

    Bing Map:微软家地图API,总免费上限12W次,几乎无访问频率限制,好申请

  • 利用开源地图资源自己搭建服务器

    如 OpenStreetMap 数据的提供商 Nominatim,可以下载该数据库并搭建自己的解析服务器,安装指南见 https://www.nominatim.org/release-docs/latest/admin/Installation/, 但是数据库存储空间需求大,外网内容难以下载,搭建步骤较繁琐。

选定直接调用 Bing Map 的地理解析API。

基本的 GET 请求 URL 为 ‘http://dev.virtualearth.net/REST/v1/Locations/’ + query + ‘?include=queryParse&maxRes=1&key=’ + key

其中 query 为待解析地址名称,key 为API 颁发的访问密钥。

具体API使用指南见官方文档(https://docs.microsoft.com/en-us/bingmaps/rest-services/locations/find-a-location-by-query),此处 maxRes 置 1 只返回一个最接近的结果。

2.2. 地图显示

使用 Js 库 Leaflet 绘制地图并标记坐标点,API 文档见https://leafletjs.com/reference-1.7.1.html 。

地图的初始化函数如下所示:

initMap() {
    let map = L.map("map", {
        minZoom: 3,
        maxZoom: 14,
        center: [39.550339, 116.114129],
        zoom: 12,
        zoomControl: true,
        attributionControl: false,
        crs: L.CRS.EPSG3857
    });

    L.tileLayer(
        "https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoiZGFtb25jaGVubG0iLCJhIjoiY2txYTlkb2N0MDZjcTJ1azF2cWwzY2NzdiJ9.AlODK2ThtyQjKfMRc6XwBA"
    ).addTo(map);
    this.map = map;    //data上需要挂载
},

坐标点标记的实现:

//设置地图
self.map.setView(new L.LatLng(result[0].lat, result[0].lon), 8);
L.marker([result[0].lat, result[0].lon]).addTo(self.map);
self.mapVisible = true;

坐标点的标记需要通过 SetTImeOut() 设定时间间隔,否则地图显示可能出错。

2.3. 可视化界面实现

任务被开发为纯前端 Web 项目,使用的库包括:

  • Vue 前端 JS 框架
  • ElementUI 组件库
  • Leaflet 地图绘制库
  • PapaParse CSV 文件解析库

最后的显示效果:

在这里插入图片描述

3. 存在的问题

3.1. 关于地图显示

点击 show in map 后首次显示的地图只有一小块范围,其他部分为灰色,需要改变窗口大小手动触发重新渲染函数,后正常显示。目前未找到解决方法。

3.2. 关于地址解析结果的准确性

地址解析结果的准确程度受多种因素影响,主要因素是输入地址的正确性,首先输入得是一个真实存在的地理位置,另外需要避免出现特殊符号影响 URL 地址的形成。

作为全球性的地图数据库,Bing Map对部分拼音构成的国内地理名称不够敏感,如 Zhoukoudian 等无法识别,或是和为其他地区的部分名称相匹配。

本次测试输入的CSV文件包含 4000+ 地址, 约有 92% 的地址返回了结果,但是这并不意味着解析的准确性为 92%,因为返回的结果可能和输入的匹配程度很低(匹配程度被分为四个层次在调用 API后随结果返回作为参照)

3.3. 关于解析的效率

输入的CSV文件需要满足格式要求才能被正确解析。虽然微软对 API 请求的速率没有做明文限制,但是从实践来看,目前的解析速度约为 0.8 - 1.5s / 个。

作为免费版的 API ,发送的请求可能返回空值错误,需要重新发送请求。~~受限于本人拙劣的前端开发能力,~~在实现异步请求时遇到了很多困难,最终通过 async/wait 和 Promise 函数勉强实现了对一组地址的轮询请求,发现自己在异步请求方面掌握的很差,需要进一步学习以改良目前项目一个请求死等收到结果才进行下一个请求的现状。

附件

github

leaflet 加载地图-引入各种地图及自定义暗黑主题 1、智图地图 2、天地图 3、高德地图 4、谷歌地图 5、自定义黑暗主题 阅读详情

相关推荐

OpenLayers实战:从Vue集成到地图裁剪、交互与流动动画

Web地图开发是构建现代地理信息系统(GIS)应用的核心技术,它基于瓦片服务、矢量数据和坐标投影等原理,将地理空间信息可视化于浏览器端。其技术价值在于提供了交互式、高性能的地图展示与空间分析能力,广泛应用于物流追踪、智慧城市、数据可视化等场景。OpenLayers作为一款功能强大的开源JavaScript库,通过其Layer、Source、View与Map的清晰架构,赋予开发者对地图渲染与行为的深度控制权。例如,结合热词“区域裁剪”需求,可利用矢量遮罩技术精确实现地图的“抠图”效果;针对“图层交互”,可通过

weixin_34101784的博客 486

Leaflet 加载纠偏后必应地图在线瓦片,必应地图最新最全在线瓦片地址

Leaflet 加载纠偏后必应地图在线瓦片,必应地图最新最全在线瓦片地址;必应地图部分瓦片采用 GCJ02 火星坐标系,可选纠偏到 WGS84 通用坐标系显示。

jingjing_n的博客 3588

bing 地图api使用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/htm

rgbaflf的专栏 5707

根据经纬度获取地址(逆地址解析)

逆地址解析 根据经纬度获取省市区地址

universe的博客 623

3.(leaflet篇)leaflet加载接入高德、openstreetmap、google地图

听老人家说:多看美女会长寿 地图之家总目录(建议先查看该内容) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>Historic Topographic Maps</title> <meta name='viewpo

GIS之家家长 1025

141:vue+leaflet 利用高德逆地理编码,点击地图标记marker,popup地址信息

本示例的目的是介绍演示如何在vue+leaflet中利用高德逆地理编码,点击地图标记marker,popup地址信息 。主要利用高德地图的api将坐标转化为地址,然后在点击的位置,弹出弹窗,在里面显示出地址信息。

大剑师兰特的GIS世界 1102

腾讯地图根据leaflet经纬度解析出详细地址信息

map.onclick(e => { //Prj是leaflet经纬度转换成腾讯使用的经纬度 const gcjLocation = Prj.wgsToGcj( e.latlng.lat, e.latlng.lng ); this.handleLatLngToAddress(gcjLocation, res => { this.locationAddress = res.detail; this.Cmap.addMarker(e.latlng); this.locationInfo = ${e.

weixin_44081503的博客 1012

Vue+OpenLayers7入门到实战:OpenLayers加载必应地图(BingMap)

本章介绍如何使用OpenLayers7在地图上如何加载必应地图(BingMap)。需要提前到必应开发者中心申请对应的地图访问api key才可以加载地图。

GIS技术方向,GIS地图技术分享(GIS入门、Openlayers教程、Leaflet教程),做最好的GIS地图开发教程。关注博主公众号:eguid 720

基于Leaflet和高德Web API扩展地理编码服务

需求背景: 需求很简单就是想调用高德地图的地理编码服务,单独扩展一个类出来。 参考地址: Leaflet类扩展:https://leafletjs.com/examples/extending/extending-1-classes.html?tdsourcetag=s_pcqq_aiomsg 高德Web服务:https://lbs.amap.com/api/webservice/guid...

wml00000的博客 2584

Leaflet扩展地理编码服务

文件中包括Leaflet源码、类扩展代码、地理编码以及逆地理编码Demo,调用高德Web 服务。

保姆级教程:用STM32F103C8T6和MAX6675搞定K型热电偶测温(附模拟/硬件SPI双版本代码)

本文提供STM32F103C8T6与MAX6675实现K型热电偶高精度测温的保姆级教程,涵盖硬件连接、SPI驱动实现及模拟SPI方案,并附双版本代码。详细解析温度数据读取、处理及常见问题排查,助力工业控制、实验室设备等场景的稳定测温系统搭建。

weixin_30765505的博客 587

bing搜索提交地图的方法

单击站点地图的任何条目以查看特定站点地图的详细信息。不允许重新提交多个站点地图;要提交站点地图,请单击顶部(右侧)的“提交站点地图”按钮以获取菜单。请注意,您只能 以可接受的格式提交站点地图,并且仅针对从“站点选择”列表中选择的网站。站点地图页面包含必应已知的特定站点的所有站点地图、站点地图索引和源的列表。站点地图是告知必应您网站上的网址的绝佳方式,否则我们的网址很难发现这些网址 网络爬虫。您还可以在应用一组过滤器后或之后下载整个站点地图列表或单个站点地图 从站点地图表中选择几个条目。

1037

基于C#的软PLC梯形图编辑器开发实战

本文详细介绍了基于C#开发软PLC梯形图编辑器的实战过程。文章从核心数据结构设计入手,阐述了如何利用C#的面向对象特性构建梯形图元素模型,并实现了图形编辑、指令表输入、逻辑连接拓扑重建等关键功能。重点剖析了模拟PLC执行引擎的扫描周期与能流传递算法,让梯形图逻辑在PC上“活”起来。最后探讨了定时器指令实现、性能优化及项目集成等进阶内容,为工业自动化软件集成提供了灵活高效的解决方案。

weixin_28314575的博客 404

bing Map 在vue项目中的使用

写在最前面 拥有全球数据库国内好像就只有百度地图有,高德、搜狗、腾讯的都不行,但是由于百度地图的数据更新不及时,所以在做相关项目要用到国外数据的时候,最好还是推荐使用bingMap。 bing Map 使用教程(基础) 参考文档: bing Map 官方教程 bing Map 初始化 引入bing map资源 <script type='text/javascript' src='...

weixin_33728268的博客 1187

一文读懂 MAVLink、PPM、SBUS:无人机通信协议的工作原理与适用场景

本文系统对比无人机领域三大核心通信协议:MAVLink作为全链路数据协议,支持飞控与地面站的双向通信,适合航拍测绘等专业场景;SBUS是数字化的高效控制协议,具备16通道、抗干扰特性,成为中高端设备标配;PPM作为传统模拟协议,成本低廉但性能有限,适合入门级应用。文章深入解析各协议的工作原理、帧结构、适用场景及调试技巧,指出MAVLink侧重状态监控、SBUS/PPM专注控制指令的互补关系,并给出新手选型建议:入门选PPM,进阶用SBUS,开发必备M

bother3000的博客 7126

SAP数据导入工具(LSMW) 超级详细教程(批量导入内部订单)

用户提了个需求,让我批量导入内部订单几百个内部订单。我本打算用写段ABAP 代码来调用 BAPI (BAPI_INTERNALORDER_CREATE)就可以了。但想到我很久没有用过LSMW 了,都快要忘记了。于是我采用LSMW的方式,完成了任务。并把过程记录下来,形成教程方便我以后回头查看,分享出来也希望对大家有帮助。

IT小职员 2万+

ios地图开发之-Bing Maps地图基础教程

众所周知,常用的几个地图无疑为:google Map、高德Amap、百度地图BMKMap、等等,前几者网上已经有了众多的资料,大家多搜一下,很容易就能上手,今天我把学习到的BingMapsSDK 开发记录下来,给E文不好的同学一个快速通道,闲话少说,马上开始。 一、导入地图库(MapControl) 幸运的是,Bing Map 的 ios版,官方提供了标准化的SDK,也就是说,

其实并不难,是你太悲观 7106

GIS地图服务数据可视化

下面介绍几种常见的地图服务,重点介绍利用Leaflet加载这些地图服务的方法,包括OSM、Bing地图、Google地图、天地图地图、百度地图、高德地图、智图、ArcGIS瓦片地图。(4)在脚本区域编写代码,实现一个加载地图的函数init(),即在该函数中分别创建Leaflet的Map类、Layer类(L.TileLayer)的对象,通过addTo()方法将图层加载到地图容器中,并在Map类的属性参数中设置参考坐标系、显示中心和显示级数等。(1)加载OSM的过程,先定义一个地图容器。

leva的博客 1048

【异常】CNB提示The bill authorization scope cannot access the current request.

摘要:CNB API返回403错误,表明当前token的授权范围无法访问目标仓库。主要原因是:1) REPO_SLUG填写错误,导致资源地址不匹配;2) CNB_TOKEN未授权目标仓库;3) 账号账单状态异常。解决步骤:先检查REPO_SLUG是否与CNB平台仓库地址完全一致;再确认CNB_TOKEN是否绑定目标仓库且有读取权限;最后检查账号账单是否正常且覆盖目标资源。完成排查后更新配置即可解决此授权问题。

奶爸的编程之路,也就一周冷个三天 663

什么是 AI Agent?它和直接调用大模型 API 有什么区别?

什么是 AI Agent?它和直接调用大模型 API 有什么区别?

我哎GIS博客 6483

Android地图开发之BingMap基础教程

【注意】由于BingMap此类教程在国内不太多,本文是本人花费多日通过一些国外网站论坛总结所得,如要转载,请保留文章出处,尊重一下作者,谢谢。 开端 本文皆在指引大家在自己的项目里嵌入BingMap,并可以在地图上添加覆盖物、折线等常用地图功能。 1.1 SDK 和API http://bingmapsandroidsdk.codeplex.com/ Bi

其实并不难,是你太悲观 9886

【图像去噪】论文复现:CLIP用于图像去噪提升泛化性!CLIPDenoising的Pytorch源码复现,跑通CLIPDenoising全流程,图文结合,网络结构梳理和拆解,对应源码注释!

论文题目:Transfer CLIP for Generalizable Image Denoising —— 用于可泛化图像去噪的转移CLIP。【图像去噪】论文精读:Transfer CLIP for Generalizable Image Denoising(CLIPDenoising)CLIPDenoising理论部分详解见上面对应的论文精读,本文以源码为主,理论部分只是粗略回顾。启发:多看其他领域的文章,分析是否能应用在去噪领域,这是产生idea的要素之一;

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 1414

WPF编程--地图控件BingMap

WPF编程--地图控件BingMap

1177

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Bing Maps的基本概念

Bing Maps是由微软公司开发的一套在线地图服务,以图像展示、地理位置查询和路线规划等功能为特色。它通过整合全球范围内的地理数据、航拍影像、交通情报和街景图片,为用户提供准确、全面的地理信息。无论是查找地点、规划行程还是展示地理数据,Bing Maps都能提供高质量的解决方案。

weixin_45875986的博客 822

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 剑指Offer57.和为s的连续正数序列
下一篇: [LeetCode]57.合并区间
DamonChenLM
博客等级 码龄9年 5粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值