高德地图怎么搜索marker_高德地图——通过地名标注marker

本文介绍了如何在高德地图上通过地名标注marker,包括解决密钥问题、根据地址查询经纬度、创建并管理多个marker以及处理input checkbox选中状态的方法。在遇到POI搜索代码无法运行后,作者找到了问题所在并分享了解决方案,同时提供了利用checkbox控制marker显示和删除的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天要实现的功能就是:

1、在地图上添加几个input 的 type 为checkbox 的代码。 注意是好几个checkbox。

2、选中复选框, 在地图上简标注marker, 取消选中复选框和不选中复选框, 则地图上没有标注对应地名的marker。

3、不使用坐标, 而是使用的地名, 比如说通过"银河SOHO"字符串, 转化出坐标, 然后在地图上标注marker。

b9ced94ff7b6?utm_campaign

image

碰到的问题

1、首先, 我在高德开发平台上面拷下来的关于POI的代码, 在本地无论如何都运行不了。

控制台也不报错, 找了好久的问题, 结果发现就是密钥的问题。查找了很久, 结果是密钥出了问题。

我自己申请的是b开头的。

半天没有反应, 结果在网上找到别人的Key 值是c开头的就可以了。就是这个key值 c93e1e293e5b1c3dc581f3ff633144d3 。真真的是救了我的命呀。

2、在高德开发平台上选择事例的问题。

我在placeSearch.search("辽宁大厦")这种方法上面费了很大的劲。用这个方法能搜出来一堆的点的位置, 可以选取的就是数组的第一个的点的位置。 如下就是得到了第一个点的位置。

placeSearch.search("辽宁大厦", function (status, result ) {

//下图标号为1的坐标

console

### 集成高德地图API实现地点模糊搜索 为了在OpenLayers中集成高德地图API并实现地点模糊搜索功能,需先引入必要的库文件。具体操作包括创建一个HTML页面来加载所需的JavaScript资源以及配置相应的参数。 #### 加载依赖项 确保项目环境中已包含OpenLayers和高德地图API的脚本链接: ```html <script src="https://cdn.jsdelivr.net/npm/ol@v7.2.2/dist/ol.js"></script> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ol@v7.2.2/ol.css"> <script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=您的高德开发者Key"></script> ``` 此处`key`应替换为申请到的有效密钥[^1]。 #### 初始化地图实例 构建基本的地图容器,并通过插件形式添加对高德地图的支持。下面是一个简单的例子说明如何完成这一过程: ```javascript import 'ol/ol.css'; import Map from 'ol/Map'; import View from 'ol/View'; import TileLayer from 'ol/layer/Tile'; import XYZSource from 'ol/source/XYZ'; // 创建基于高德地图瓦片服务的基础图层 function createAMapBaseLayer() { return new TileLayer({ source: new XYZSource({ url: 'http://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&t=7&x={x}&y={y}&z={z}', attributions: '<a href="https://lbs.amap.com/" target="_blank">© Gaode</a>' }) }); } const map = new Map({ target: document.getElementById('map'), // HTML中的DOM节点ID layers: [ createAMapBaseLayer() ], view: new View({ projection: 'EPSG:3857', center: [116.407396, 39.9042], // 设置初始中心点坐标(经度,纬度),这里设为中国北京的位置 zoom: 10, minZoom: 3, maxZoom: 18 }), }); ``` 此部分代码实现了基础的地图显示逻辑,其中心位于北京市区,放大级别设定为10级[^2]。 #### 添加搜索控件 利用高德提供的Web Services接口执行地理编码查询,即根据输入的地名字符串返回匹配的结果列表。以下是关于怎样向现有地图对象添加此类交互能力的具体做法: ```javascript async function searchPlace(queryString) { const response = await fetch(`https://restapi.amap.com/v3/place/text?key=${your_api_key}&keywords=${encodeURIComponent(queryString)}&city=全国`); const data = await response.json(); if (data.status === "1") { // 请求成功时处理结果集 console.log(data.pois); // 输出找到的兴趣点信息 // 清除之前的标记 clearMarkers(); // 对每一个POI放置Marker图标 data.pois.forEach(poi => addMarker([poi.location.lng, poi.location.lat])); // 将视窗调整至首个发现的目标附近 flyToLocation([data.pois[0].location.lng, data.pois[0].location.lat]); } } ``` 上述函数接受用户提供的关键词作为参数发起HTTP GET请求给高德服务器端口;一旦获得有效响应,则解析JSON格式的数据体提取出兴趣点(Point Of Interest)集合用于后续渲染工作。注意这里的`your_api_key`同样需要替换成实际注册得到的应用程序标识符[^3]。 #### 辅助方法定义 最后补充几个辅助性的内部工具函数帮助管理界面上动态变化的内容,比如清除已有标注、新增单个定位标志或是平滑过渡视角等动作。 ```javascript let markersGroup; function clearMarkers(){ if(markersGroup){ map.removeLayer(markersGroup); markersGroup=null; } } function addMarker(coordinate){ var iconFeature = new Feature(new Point(toMercator(coordinate))); var markerStyle=new Style({ image:new Icon(({ anchor:[0.5,1], src:'https://openlayers.org/en/latest/examples/data/icon.png' })) }); iconFeature.setStyle(markerStyle); if(!markersGroup){ markersGroup =new VectorLayer({ source : new VectorSource(), zIndex:Infinity }); map.addLayer(markersGroup); } markersGroup.getSource().addFeature(iconFeature); } function toMercator(lngLatArr){ return fromLonLat(lngLatArr,'EPSG:4326','EPSG:3857'); } function flyToLocation(destinationLngLat){ map.getView().animate({ center:toMercator(destinationLngLat), duration:2000, easing:easing.inAndOut }); } ``` 这些实用的小部件共同作用使得整个应用更加友好易用,同时也增强了用户体验感。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值