
php
使用php和MySQL保存多边形和点的位置信息可以帮助我们在Google地图上显示自定义的区域和标记。在本文中,我们将介绍如何使用php将多边形和点的坐标保存到MySQL数据库中,并通过Google地图将其可视化展示出来。
保存多边形和点的坐标首先,我们需要创建一个MySQL数据库和一个包含两个表格的数据表。一个表格用于保存多边形的坐标,另一个表格用于保存点的坐标。我们将使用php来连接数据库,并将多边形和点的坐标数据保存到相应的表格中。在数据库中创建一个名为"locations"的数据库,并创建两个表格"polygons"和"points",分别用于保存多边形和点的坐标信息。以下是创建表格的SQL语句:sqlCREATE TABLE polygons ( id INT(11) AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, coordinates TEXT NOT NULL);CREATE TABLE points ( id INT(11) AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, latitude FLOAT(10, 6) NOT NULL, longitude FLOAT(10, 6) NOT NULL);接下来,我们可以使用php代码连接到MySQL数据库,并将多边形和点的坐标数据保存到相应的表格中。以下是一个简单的php代码示例:
php<?php</p>// 连接到MySQL数据库$servername = "localhost";$username = "your_username";$password = "your_password";$dbname = "locations";$conn = new MySQLi($servername, $username, $password, $dbname);// 检查数据库连接是否成功if ($conn->connect_error) { die("数据库连接失败: " . $conn->connect_error);}// 保存多边形的坐标$polygons = array( array("name" => "多边形1", "coordinates" => "39.986057,116.329187;39.987057,116.329187;39.987057,116.330187;39.986057,116.330187;39.986057,116.329187"), array("name" => "多边形2", "coordinates" => "39.987057,116.330187;39.988057,116.330187;39.988057,116.331187;39.987057,116.331187;39.987057,116.330187"), array("name" => "多边形3", "coordinates" => "39.988057,116.331187;39.989057,116.331187;39.989057,116.332187;39.988057,116.332187;39.988057,116.331187"));foreach ($polygons as $polygon) { $name = $polygon["name"]; $coordinates = $polygon["coordinates"]; $sql = "INSERT INTO polygons (name, coordinates) VALUES ('$name', '$coordinates')"; if ($conn->query($sql) === TRUE) { echo "多边形数据保存成功!"; } else { echo "保存多边形数据时发生错误: " . $conn->error; }}// 保存点的坐标$points = array( array("name" => "点1", "latitude" => 39.986057, "longitude" => 116.329187), array("name" => "点2", "latitude" => 39.987057, "longitude" => 116.330187), array("name" => "点3", "latitude" => 39.988057, "longitude" => 116.331187));foreach ($points as $point) { $name = $point["name"]; $latitude = $point["latitude"]; $longitude = $point["longitude"]; $sql = "INSERT INTO points (name, latitude, longitude) VALUES ('$name', $latitude, $longitude)"; if ($conn->query($sql) === TRUE) { echo "点数据保存成功!"; } else { echo "保存点数据时发生错误: " . $conn->error; }}// 关闭数据库连接$conn->close();?>在Google地图上显示多边形和点现在,我们已经成功保存了多边形和点的坐标数据到MySQL数据库中。接下来,我们可以使用Google地图的API来读取数据库中的坐标数据,并在地图上将其可视化展示出来。首先,我们需要在HTML文件中引入Google地图的API库,并创建一个用于显示地图的html<!DOCTYPE html><html><head> <title>显示多边形和点</title> <script src="https://maps.Googleapis.com/maps/api/JS?key=YOUR_API_KEY"></script> <script> // 在页面加载完成后执行 window.onload = function() { // 创建地图对象 var map = new Google.maps.Map(document.getElementById('map'), { center: {lat: 39.987057, lng: 116.330187}, // 设置地图中心点坐标 zoom: 12 // 设置地图缩放级别 }); // 显示多边形 <?php</p> // 从数据库中读取多边形的坐标数据 $sql = "SELECT * FROM polygons"; $result = $conn->query($sql); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $coordinates = $row["coordinates"]; echo "var polygonCoordinates = ["; $points = explode(";", $coordinates); foreach ($points as $point) { $latLng = explode(",", $point); echo "{lat: " . $latLng[0] . ", lng: " . $latLng[1] . "},"; } echo "];"; echo "var polygon = new Google.maps.Polygon({"; echo "paths: polygonCoordinates,"; echo "strokeColor: '#FF0000',"; echo "strokeOpacity: 0.8,"; echo "strokeWeight: 2,"; echo "fillColor: '#FF0000',"; echo "fillOpacity: 0.35"; echo "});"; echo "polygon.setMap(map);"; } } ?> // 显示点 <?php</p> // 从数据库中读取点的坐标数据 $sql = "SELECT * FROM points"; $result = $conn->query($sql); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $latitude = $row["latitude"]; $longitude = $row["longitude"]; echo "var marker = new Google.maps.Marker({"; echo "position: {lat: " . $latitude . ", lng: " . $longitude . "},"; echo "map: map,"; echo "title: '" . $row["name"] . "'"; echo "});"; } } ?> } </script> <style> #map { height: 400px; } </style></head><body> <div id="map"></div></body></html>在上述HTML代码中,我们使用php从数据库中读取多边形和点的坐标数据,并使用JavaScript在地图上显示它们。多边形使用Google Maps的Polygon对象,点则使用Marker对象。我们可以根据需要自定义多边形和点的样式。通过使用php和MySQL保存多边形和点的坐标信息,我们可以轻松地在Google地图上显示自定义的区域和标记。这为我们提供了一个强大的工具,用于在地图上可视化展示位置信息。无论是创建一个地理信息系统应用程序,还是在网站中显示交通状况或商家位置,保存多边形和点的坐标数据都是非常有用的。案例代码:php<?php</p>// 连接到MySQL数据库$servername = "localhost";$username = "your_username";$password = "your_password";$dbname = "locations";$conn = new MySQLi($servername, $username, $password, $dbname);// 检查数据库连接是否成功if ($conn->connect_error) { die("数据库连接失败: " . $conn->connect_error);}// 保存多边形的坐标$polygons = array( array("name" => "多边形1", "coordinates" => "39.986057,116.329187;39.987057,116.329187;39.987057,116.330187;39.986057,116.330187;39.986057,116.329187"), array("name" => "多边形2", "coordinates" => "39.987057,116.330187;39.988057,116.330187;39.988057,116.331187;39.987057,116.331187;39.987057,116.330187"), array("name" => "多边形3", "coordinates" => "39.988057,116.331187;39.989057,116.331187;39.989057,116.332187;39.988057,116.332187;39.988057,116.331187"));foreach ($polygons as $polygon) { $name = $polygon["name"]; $coordinates = $polygon["coordinates"]; $sql = "INSERT INTO polygons (name, coordinates) VALUES ('$name', '$coordinates')"; if ($conn->query($sql) === TRUE) { echo "多边形数据保存成功!"; } else { echo "保存多边形数据时发生错误: " . $conn->error; }}// 保存点的坐标$points = array( array("name" => "点1", "latitude" => 39.986057, "longitude" => 116.329187), array("name" => "点2", "latitude" => 39.987057, "longitude" => 116.330187), array("name" => "点3", "latitude" => 39.988057, "longitude" => 116.331187));foreach ($points as $point) { $name = $point["name"]; $latitude = $point["latitude"]; $longitude = $point["longitude"]; $sql = "INSERT INTO points (name, latitude, longitude) VALUES ('$name', $latitude, $longitude)"; if ($conn->query($sql) === TRUE) { echo "点数据保存成功!"; } else { echo "保存点数据时发生错误: " . $conn->error; }}// 关闭数据库连接$conn->close();?>html<!DOCTYPE html><html><head> <title>显示多边形和点</title> <script src="https://maps.Googleapis.com/maps/api/JS?key=YOUR_API_KEY"></script> <script> // 在页面加载完成后执行 window.onload = function() { // 创建地图对象 var map = new Google.maps.Map(document.getElementById('map'), { center: {lat: 39.987057, lng: 116.330187}, // 设置地图中心点坐标 zoom: 12 // 设置地图缩放级别 }); // 显示多边形 <?php</p> // 从数据库中读取多边形的坐标数据 $sql = "SELECT * FROM polygons"; $result = $conn->query($sql); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $coordinates = $row["coordinates"]; echo "var polygonCoordinates = ["; $points = explode(";", $coordinates); foreach ($points as $point) { $latLng = explode(",", $point); echo "{lat: " . $latLng[0] . ", lng: " . $latLng[1] . "},"; } echo "];"; echo "var polygon = new Google.maps.Polygon({"; echo "paths: polygonCoordinates,"; echo "strokeColor: '#FF0000',"; echo "strokeOpacity: 0.8,"; echo "strokeWeight: 2,"; echo "fillColor: '#FF0000',"; echo "fillOpacity: 0.35"; echo "});"; echo "polygon.setMap(map);"; } } ?> // 显示点 <?php</p> // 从数据库中读取点的坐标数据 $sql = "SELECT * FROM points"; $result = $conn->query($sql); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $latitude = $row["latitude"]; $longitude = $row["longitude"]; echo "var marker = new Google.maps.Marker({"; echo "position: {lat: " . $latitude . ", lng: " . $longitude . "},"; echo "map: map,"; echo "title: '" . $row["name"] . "'"; echo "});"; } } ?> } </script> <style> #map { height: 400px; } </style></head><body> <div id="map"></div></body></html>Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号