1

我有这个领域center。保存的数据是Longitude_Latitude位置。我正在使用 Google 地图 JavaScript API,我想获取位于所示地图中的坐标。(我在服务器端使用 php)。

https://www.dropbox.com/s/uzeiq6043rvueqf/Capture.PNG
https://www.dropbox.com/s/lk6g4tucf60n8va/Untitled.png

我解决这个问题的想法是将中心坐标与角落坐标进行比较。为了获得位置坐标

  1. center_Longitude必须在TopLeftCoords_Longitude和之间BottomRightCoords_Longitude
  2. center_Latitude必须在 TopLeftCoords_Latitude和之间BottomRightCoords_Latitude

问题是我可以使用 MySQL 做到这一点吗?还是我必须为中心经度和纬度设置单独的字段?

4

2 回答 2

0

我不清楚你在问什么,但我收集到你想分离center字段以获得纬度和经度分量。这可以像这样完成:

SELECT 
    LEFT(center, LOCATE('_', center) - 1) AS latitude,
    RIGHT(center, LOCATE('_', center) - 1) AS longitude
FROM earth

更新 1

根据您的评论,您已要求以下标准:

IF Lat <= TopLeftLat && Lat >= BottomRightLat && Lon <= TopLeftLon && Lon >= BottomRightLon

这是您修改后的查询:

SELECT
    LEFT(center, LOCATE('_', center) - 1) AS latitude, 
    RIGHT(center, CHAR_LENGTH(center) - LOCATE('_', center) ) AS longitude
FROM realestate

将条件添加到您的查询中将如下所示(假设TopLeftLat等是表中的属性):

SELECT a.lat, a.lon
FROM
    (SELECT
        LEFT(center, LOCATE('_', center) - 1) AS lat, 
        RIGHT(center, CHAR_LENGTH(center) - LOCATE('_', center) ) AS lon
    FROM realestate) a
WHERE a.lat <= TopLeftLat AND a.lat >= BottomRightLat AND a.lon <= TopLeftLon AND a.lon >= BottomRightLon
于 2012-09-26T23:33:11.747 回答
0

是的,您需要单独的经度和纬度字段。使用 php 将坐标保存在数据库中(出于安全原因,切勿使用 javascript !!)。

当您的数据库中有数据时,您可以在那里执行数学运算,例如

SELECT SUM(latitude) FROM tablename

或者,您从数据库中提取数据并在 php 中对其进行处理,如下所示:

<?php
    $result=mysqli_query("SELECT * FROM tablename");
    $entries=array();
    while($row=mysqli_fetch_object($result)) $entries[]=(object) $row;
?>

这会将整个表保存在一个名为entries.

这里有一些关于如何使用 php 从数据库中检索数据的很好的说明。

于 2012-09-26T23:14:51.143 回答