由于百度地图在国外的某些寻路的场景不太完善,所以试用了一下俄罗斯的开源地图。同google地图一样,规划路线需要申请apikey,但无需绑定信用卡,每天的免费调用次数也非常够用。

yandex maps开发文档

申请apikey

只需要创建账号,按指引申请就好了。
申请页面是俄文的,没关系,勾选下面这个选项然后点击下一步就好

JavaScript API и HTTP Геокодер

查看使用次数

https://developer.tech.yandex.ru/services/3

引入

由于yandex默认是[ 纬度,经度 ],所以在引入时修改了默认方式,设置成我们熟悉的经纬度

<scriptsrc="https://api-maps.yandex.ru/2.1/?apikey=Your API key&lang=en_US&coordorder=longlat"type="text/javascript"></script>

初始化

ymaps.ready(function () {const yandexMap = new ymaps.Map(id, {center: [24.9042208, 14.3782747], // 苏丹zoom: 7,controls: ['zoomControl', 'fullscreenControl'],});});

如果仅仅是想更改地图中心点

yandexMap.setCenter([ 3.610998, 51.4987962 ], 7) // 南非

声明GeoObjectCollection

GeoObjectCollection可增加多个,用来操作不同类型的元素

const pCollection = new ymaps.GeoObjectCollection();
yandexMap.geoObjects.add(pCollection); // 将集合添加到map
// pCollection.removeAll(); // 移除集合中所有的元素

根据经纬度获取城市名称

假定经纬度为coords

const myReverseGeocoder = ymaps.geocode(coords, { kind: 'locality' });myReverseGeocoder.then(function (res) {console.log(res);const obj = res.geoObjects.get(0);const name = obj.properties.get('name'); // 地点名称const address = obj.properties.get('text'); // 详细地址},function (err) {// todo 提示获取失败console.log('地点获取失败 === ', err);});

显示气泡

pCollection.add(new ymaps.Placemark([ 3.610998, 51.4987962 ], {iconCaption: '这里是南非',}));

规划显示路线

如果自己添加路线,可显示多条不同出发地目的地的路线

const multiRoute = new ymaps.multiRouter.MultiRoute({referencePoints: [start, end], // 出发地和目的地经纬度或地址名称params: {routingMode: 'auto',},});pCollection.add(multiRoute);

在路线中获取后增加某些处理(不要擅自存储这些信息,这在免费的yandex中是不被允许的)

const multiRoute = new ymaps.multiRouter.MultiRoute({referencePoints: [startAddress, endAddress],params: {routingMode: 'auto',},});multiRoute.model.events.add('requestsuccess', function () {try {const activeRoute = multiRoute.getActiveRoute();const distance = activeRoute.properties.get('distance').text; // 距离const duration = activeRoute.properties.get('duration').text; // 时间const boundedBy = activeRoute.properties.get('boundedBy');// const activeRoutePaths = activeRoute.getPaths()// console.log(//   'activeRoutePaths: ',//   activeRoutePaths.properties.getAll()// )// activeRoutePaths.each(function (path) {//   console.log('path: ', path.properties)// })}} catch (e) {console.log(`${startAddress} To ${endAddress}的路线绘制失败 === `, e);}});

yandex地图js学习相关推荐

  1. ArcGIS JS 学习笔记4 实现地图联动

    原文:ArcGIS JS 学习笔记4 实现地图联动 1.开篇 守望屁股实在太好玩了,所以最近有点懒,这次就先写个简单的来凑一下数.这次我的模仿目标是天地图的地图联动. 天地的地图联动不仅地图有联动,而 ...

  2. WebGIS地图相关学习笔记

    这里将记录学习gis地图相关内容的时候,如果碰到了不懂或不理解的知识点的时候,会记录在这里. 进阶问题 Web地图服务规范(WMS.WMTS.TMS)简析_surpassLiang的博客-CSDN博客 ...

  3. QT5百度地图开发学习——qt调用JavaScript函数并传参

    文章目录 前言 一.通信桥梁bridge 二.QT与JS相互通信(调用函数) 1.QT调用js函数 前言 在上文<QT5百度地图开发学习--控件提升展示地图>中,我们通过控件提升的方式在同 ...

  4. backbone.js学习笔记

    backbone.js学习笔记 之前只接触过jQuery,看来Backbone是除了jQuery的第二大JS框架... backbone到底是个啥? 其实刚开始我也不知道=_=,我是这周二才听说居然还 ...

  5. 程序员的高速学习法——以JS学习为例,进行图解

    近期一直在忙着学习,感觉做总结的时间太少了,听起来挺好玩儿的,就像<倾城之恋>里面.范柳原说:那时候都忙着谈恋爱了哪里有时间恋爱.  学习和总结也是一样.不能一直忙着学习而导致自己没有时间 ...

  6. 高德地图 JS API - 根据地名实现标记定位

    德地图 JS API 使用前的准备工作请参考官方网站说明: https://lbs.amap.com/api/javascript-api/guide/abc/prepare 根据地名实现地图标记定位 ...

  7. node.js学习笔记

    # node.js学习笔记标签(空格分隔): node.js---## 一 内置模块学习 ### 1. http 模块 ``` //1 导入http模块 const http =require('ht ...

  8. node.js学习笔记14—微型社交网站

    node.js学习笔记14-微型社交网站 1.功能分析 微博是以用户为中心,因此需要有注册和登录功能. 微博最核心的功能是信息的发表,这个功能包括许多方面,包括:数据库访问,前端显示等. 一个完整的微 ...

  9. WebGL three.js学习笔记 6种类型的纹理介绍及应用

    WebGL three.js学习笔记 6种类型的纹理介绍及应用 本文所使用到的demo演示: 高光贴图Demo演示 反光效果Demo演示(因为是加载的模型,所以速度会慢) (一)普通纹理 计算机图形学 ...

最新文章

  1. 网闸与防火墙的区别是什么
  2. Asp.net MVC JsonResult 忽略属性
  3. MiniDao普通项目集成方案
  4. 史上最大中文知识图谱,规模达1.4亿,现在开源可下载,还有配套聊天机器人API...
  5. APUE读书笔记-12线程控制-04同步属性
  6. 不同外置模拟器用Android Studio连接指令
  7. cacti 被监控机器snmp 配置
  8. 【WC2018】通道【边分治】【虚树】【树的直径】
  9. iou画 yolov3_yolov3环境配置训练及优化
  10. 装mysql最后一步没响应_解决MySQL安装到最后一步未响应的三种方法
  11. 《软件工程》individual project开发小记(一)
  12. LeetCode 1268. 搜索推荐系统(Trie树/multiset)
  13. 从入门到精通 - Fayson带你玩转CDH
  14. 超声波及其传感器工作原理
  15. 金山毒霸2011进程合并更新 更顺畅运行电脑
  16. Gradle 4.4 版本 百度云网盘地址(永久有效)
  17. 不懂就学——什么是input和output?
  18. 利用python打开Matlab的mat文件
  19. 【Linux】fork之后,子进程继承了父进程哪些内容
  20. swift 计时器timer

热门文章

  1. 音视频技术开发周刊 | 209
  2. iOS pop使用代理传值
  3. 150512610_2_创伤后成长与人格特质问卷_229_229
  4. superuser允许所有授权
  5. STM32之DMA转运学习,附代码
  6. 中软国际成功转港交所主板上市
  7. Hive中SQL执行语句报错“Display all 469 possibilities? (y or n)”
  8. 关于:Type Java compiler level does not match the version of the instal 的问题
  9. 趋高机器视觉AOI自动光学检测仪实验研究
  10. 医疗教学展示培训报告说明ppt模板 毕业答辩PPT 科研成果展示PPT图形素材打包