如何创建/修改Google Maps列表?API、URL、JS实现问询
搞定Google Maps多地点列表的几种方法(突破10个途经点限制)
一、用Google Maps URL直接操作列表
官方没有直接批量导入的URL参数,但可以这么操作:
- 先手动创建一个地点列表,复制它的分享链接,直接通过该URL打开即可编辑,添加地点无数量限制。
- 若要快速批量导入地点,可在Google Maps搜索框用逗号分隔输入所有地点,选中搜索结果后右键添加到目标列表。
二、用Google Maps Platform API实现自定义列表(替代方案)
官方未开放直接操作个人地点列表的API,但可以结合两个API实现类似需求:
- 将所有地点存储在Google Sheets中(无数量限制),通过Sheets API读取地址数据。
- 调用Geocoding API将地址转换为经纬度坐标。
- 用Google Maps JavaScript API在地图上标记所有地点,还能自行编写逻辑拼接路线,绕开10个途经点的限制。
参考代码片段:
// 假设已获取所有地点的经纬度数组points const directionsService = new google.maps.DirectionsService(); const directionsRenderer = new google.maps.DirectionsRenderer(); directionsRenderer.setMap(map); // 拆分路线,每次处理最多10个途经点(起点+9个途经点+终点) function calculateMultiLegRoute(points) { const batches = []; for (let i = 0; i < points.length; i += 9) { const batch = points.slice(i, i + 11); if (i > 0) batch.unshift(points[i - 1]); // 衔接上一段路线的终点 batches.push(batch); } let currentBatch = 0; let renderOpts = { preserveViewport: true }; function processNextBatch() { const batch = batches[currentBatch]; const request = { origin: batch[0], destination: batch[batch.length - 1], waypoints: batch.slice(1, -1).map(p => ({ location: p, stopover: true })), travelMode: google.maps.TravelMode.DRIVING }; directionsService.route(request, (response, status) => { if (status === 'OK') { directionsRenderer.setDirections(response); currentBatch++; if (currentBatch < batches.length) { renderOpts.suppressMarkers = true; // 隐藏后续批次的重复起点标记 directionsRenderer.setOptions(renderOpts); processNextBatch(); } } }); } processNextBatch(); }
三、用Google My Maps的导入功能批量添加地点
你提到的地点列表就是Google My Maps,它支持KML/KMZ文件导入:
- 将所有地点整理成KML格式(网上有在线工具可批量生成),在My Maps中点击「导入」上传文件,一次性即可添加无限数量的地点。
- 导入完成后保存为列表,可直接复制分享链接或嵌入代码使用,无需额外开发。
四、注意事项
- 官方目前未开放个人地点列表的操作API,无法直接通过代码修改私有列表,上述均为替代或间接实现方式。
- 使用Google Maps Platform API需先申请API密钥,同时要注意配额限制和收费规则。
内容的提问来源于stack exchange,提问作者user2997586
相关产品推荐
相关产品推荐

