当前位置:首页 > JavaScript

谷歌地图 js 实现

2026-04-07 12:50:16JavaScript

以下是关于如何使用 Google Maps JavaScript API 实现地图功能的详细方法:

获取 API 密钥

在 Google Cloud Platform 控制台中创建项目并启用 Google Maps JavaScript API。生成 API 密钥并确保启用计费功能(部分功能需付费)。

引入 API 脚本

在 HTML 文件中添加以下脚本标签,替换 YOUR_API_KEY 为实际密钥:

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script>

创建基础地图

在 HTML 中添加地图容器元素:

<div id="map" style="height: 400px; width: 100%;"></div>

初始化地图的 JavaScript 代码:

谷歌地图 js 实现

function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    center: { lat: 37.7749, lng: -122.4194 }, // 旧金山坐标
    zoom: 12 // 缩放级别
  });
}

添加标记

在地图上添加标记点:

const marker = new google.maps.Marker({
  position: { lat: 37.7749, lng: -122.4194 },
  map: map,
  title: "San Francisco"
});

信息窗口

为标记添加点击弹出信息窗口:

const infowindow = new google.maps.InfoWindow({
  content: "<h3>San Francisco</h3><p>California, USA</p>"
});

marker.addListener("click", () => {
  infowindow.open(map, marker);
});

绘制形状

添加圆形覆盖物示例:

谷歌地图 js 实现

const cityCircle = new google.maps.Circle({
  strokeColor: "#FF0000",
  strokeOpacity: 0.8,
  strokeWeight: 2,
  fillColor: "#FF0000",
  fillOpacity: 0.35,
  map: map,
  center: { lat: 37.7749, lng: -122.4194 },
  radius: 2000 // 2公里半径
});

路线绘制

绘制两点间的折线:

const flightPath = new google.maps.Polyline({
  path: [
    { lat: 37.7749, lng: -122.4194 },
    { lat: 34.0522, lng: -118.2437 } // 洛杉矶坐标
  ],
  geodesic: true,
  strokeColor: "#FF0000",
  strokeOpacity: 1.0,
  strokeWeight: 2,
  map: map
});

事件监听

添加地图点击事件监听:

map.addListener("click", (event) => {
  console.log("Clicked at:", event.latLng.lat(), event.latLng.lng());
});

地理编码

将地址转换为坐标:

const geocoder = new google.maps.Geocoder();
geocoder.geocode({ address: "1600 Amphitheatre Parkway" }, (results, status) => {
  if (status === "OK") {
    map.setCenter(results[0].geometry.location);
    new google.maps.Marker({
      map: map,
      position: results[0].geometry.location
    });
  }
});

自定义样式

应用自定义地图样式:

const styles = [
  {
    featureType: "water",
    elementType: "geometry",
    stylers: [{ color: "#e9e9e9" }]
  }
];
map.setOptions({ styles: styles });

注意事项

  1. 实际部署时需要限制 API 密钥的使用来源
  2. 移动端需添加 viewport meta 标签确保正常显示
  3. 复杂应用建议使用官方提供的 react、angular 等框架组件库
  4. 注意 API 的每日调用限额和费用计算

标签: 地图js
分享给朋友:

相关文章

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…

js 实现滚动

js 实现滚动

实现滚动的方法 使用 window.scrollTo() window.scrollTo() 方法可以滚动到文档中的特定位置。可以指定 x 和 y 坐标,或者使用平滑滚动的选项。 // 滚动到指定位…