首页 > 文章列表 > 利用php和高德地图API创建交互式地图标记

利用php和高德地图API创建交互式地图标记

php 高德地图API 交互式地图标记
313 2023-08-09

利用 PHP 和高德地图 API 创建交互式地图标记

介绍:
在现代移动互联网时代,地图服务成为了人们必不可少的工具之一。无论是查找位置、规划路线,还是搜索周边信息,地图都能提供帮助。高德地图 API 提供了丰富的地图服务,结合 PHP 语言的强大处理能力,我们可以利用这两者创建交互式地图标记。

准备工作:

  1. 注册高德开发者账号。
  2. 创建一个新的 web 服务应用,获取开发者密钥(key)。

代码实现:
首先,我们需要准备一个基本的 HTML 页面结构,用来容纳地图和相应的交互功能。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>交互式地图标记示例</title>
  <style>
    #map {
      width: 100%;
      height: 600px;
    }
  </style>
</head>
<body>
  <div id="map"></div>

  <script src="https://webapi.amap.com/maps?v=1.4.15&key=YOUR_KEY"></script>
  <script src="https://webapi.amap.com/ui/1.1/main.js"></script>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

  <script>
    // 创建地图对象
    var map = new AMap.Map("map", {
      zoom: 13, // 设置地图缩放级别
      center: [116.397428, 39.90923] // 设置地图中心点坐标
    });

    // 添加地图控件
    AMap.plugin(['AMap.ToolBar'], function() {
      map.addControl(new AMap.ToolBar());
    });

    // 点击地图事件
    map.on('click', function(e) {
      // 获取点击的经纬度坐标
      var lnglat = e.lnglat;
      var longitude = lnglat.getLng();
      var latitude = lnglat.getLat();

      // 创建 Marker 对象并添加到地图上
      var marker = new AMap.Marker({
        position: [longitude, latitude]
      });
      map.add(marker);

      // 弹窗显示经纬度信息
      var infoWindow = new AMap.InfoWindow({
        content: '经度:' + longitude + '<br>纬度:' + latitude
      });
      marker.on('click', function() {
        infoWindow.open(map, marker.getPosition());
      });
    });
  </script>
</body>
</html>

解析:

  1. 通过引入高德地图和 jQuery 库的资源链接,我们可以在页面中使用相关的 API。
  2. 创建了一个地图对象,并设置了缩放级别和中心点坐标。
  3. 添加了地图控件,包括缩放工具条。
  4. 监听地图的点击事件,获取点击位置的经纬度坐标。
  5. 创建了一个标记点对象,并将其添加到地图上。
  6. 创建了一个信息窗体对象,并在标记点被点击时显示经纬度信息。

注意事项:

  1. 在代码中的 YOUR_KEY 处替换为你自己的开发者密钥。
  2. 由于高德地图 API 使用了 HTTPS 协议,所以建议将网页部署在支持 HTTPS 的服务器上,以避免浏览器报错。

总结:
本文通过 PHP 语言与高德地图 API 结合,实现了一个简单的交互式地图标记示例。读者可以根据自己的需求和地图 API 的文档,进一步拓展功能,例如添加路线规划、搜索功能等。利用地图服务,我们可以为用户提供更加便利的地理信息展示和交互体验。