Google 地图使用 PHP 在 MySQL 中保存多边形和点

mysqlGooglephp

1个回答

写回答

睿rui

2025-07-09 19:57

+ 关注

php
php

使用php和MySQL保存多边形和点的位置信息可以帮助我们在Google地图上显示自定义的区域和标记。在本文中,我们将介绍如何使用php将多边形和点的坐标保存到MySQL数据库中,并通过Google地图将其可视化展示出来。

保存多边形和点的坐标

首先,我们需要创建一个MySQL数据库和一个包含两个表格的数据表。一个表格用于保存多边形的坐标,另一个表格用于保存点的坐标。我们将使用php来连接数据库,并将多边形和点的坐标数据保存到相应的表格中。

在数据库中创建一个名为"locations"的数据库,并创建两个表格"polygons"和"points",分别用于保存多边形和点的坐标信息。以下是创建表格的SQL语句:

sql

CREATE 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代码示例:

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>

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号