0

0

javascript地图如何集成_如何调用第三方API

夢幻星辰

夢幻星辰

发布时间:2026-01-10 20:32:02

|

755人浏览过

|

来源于php中文网

原创

地图初始化失败因未等sdk加载完就调用new google.maps.map;需用callback或load事件;高德/百度需确保加载完成再实例化;地理编码须后端代理防密钥泄露和cors;marker失效多因容器无宽高或被隐藏,需设尺寸并手动resize。

javascript地图如何集成_如何调用第三方api

地图初始化失败:没加载 SDK 就调用 new google.maps.Map

常见错误是直接在页面里写 new google.maps.Map(...),但 google.maps 还没定义。Google Maps JavaScript API 必须等 https://maps.googleapis.com/maps/api/js 加载完成才能用。

正确做法是等 callback 触发,或监听 load 事件:

function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    center: { lat: 39.9042, lng: 116.4074 },
    zoom: 12
  });
}

// 在 script 标签里加 &callback=initMap
// &key=YOUR_API_KEY

注意:callback 参数必须是全局函数名(不能是箭头函数或模块内声明的函数),否则 SDK 找不到入口。

高德/百度地图替代方案:为什么不用 Google 的时候要改初始化方式

高德(AMap)和百度(BMap)不依赖 callback 全局函数,但加载时机仍关键——它们都提供异步加载方法,且默认不挂载到 window 上。

立即学习Java免费学习笔记(深入)”;

  • 高德需先执行 AMap.initAMapApiLoader(...),再 AMap.Map
  • 百度需等 window.BMap 存在,或用 document.write 同步加载(不推荐)
  • 若用 ES 模块,高德官方 SDK 不支持直接 import,得配合 dynamic import() + define 魔法注释

简单起见,推荐用 script 标签同步加载:

遨虾
遨虾

1688推出的跨境电商AI智能体

下载
<script src="https://webapi.amap.com/maps?v=2.0&key=YOUR_KEY"></script>
<script>
  const map = new AMap.Map('map', {
    center: [116.397428, 39.90923],
    zoom: 12
  });
</script>

调用地理编码 API:前端直接请求会触发 CORS 或密钥泄露

不能在前端 JS 里用 fetch 直接调 Google 地址解析接口(如 https://maps.googleapis.com/maps/api/geocode/json?address=xxx&key=xxx),原因有两个:

  • Google 禁止前端暴露 key,服务端校验 referer 后会拒绝请求
  • 浏览器会拦截跨域响应(即使返回 200)

正确路径是走后端代理:

  • 前端发请求到自己的 /api/geocode?address=xxx
  • 后端用 axiosfetch 转发到 Google/Baidu/AMap 接口(带 key)
  • 后端响应时过滤掉敏感字段(如 place_idtypes 中的内部标识)

百度和高德虽允许前端 key,但依然不建议——key 一旦泄漏,别人可盗用配额甚至被恶意刷量。

Marker 点击事件失效:地图容器未设置宽高或被父级隐藏

google.maps.MarkerAMap.Marker 创建后点不动,大概率不是代码问题,而是 CSS 导致:

  • 容器 div#map 没设 height(默认为 0),地图渲染区域实际不可见
  • 父级用了 display: nonevisibility: hidden,地图初始化时尺寸计算为 0,后续 show 也不自动重绘
  • 使用了 transform: scale() 缩放容器,导致点击坐标映射错乱

解决办法:

  • 给地图容器加 style="width: 100%; height: 400px;"(百分比需确保父级有高度)
  • 如果地图在 Tab 页或 Modal 里,首次显示时手动触发 map.resize()(Google)或 map.resize()(高德)
  • 避免对地图容器用 transform,改用 zoom 控制缩放

地图 SDK 对 DOM 尺寸极其敏感,初始化之后再改容器大小,几乎一定需要显式通知重绘。

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

450

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

546

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

326

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

81

2025.09.10

typedef和define区别
typedef和define区别

typedef和define区别在类型检查、作用范围、可读性、错误处理和内存占用等。本专题为大家提供typedef和define相关的文章、下载、课程内容,供大家免费下载体验。

118

2023.09.26

define的用法
define的用法

define用法:1、定义常量;2、定义函数宏:3、定义条件编译;4、定义多行宏。更多关于define的用法的内容,大家可以阅读本专题下的文章。

360

2023.10.11

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1708

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

549

2025.10.17

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

24

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

CSS教程
CSS教程

共754课时 | 38万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号