1

私はこのフィールドを持っていますcenter。保存されたデータLongitude_Latitudeは場所のものです。GoogleマップのJavaScriptAPIを使用していますが、表示されているマップ内にある座標を取得したいと思います。(私はサーバー側でphpを使用しています)。

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

これを解決するための私のアイデアは、中央の座標とコーナーの座標を比較することです。ロケーション座標を取得するために

  1. center_LongitudeTopLeftCoords_Longitudeとの間でなければなりませんBottomRightCoords_Longitude
  2. center_LatitudeTopLeftCoords_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

または、dbからデータをプルし、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 に答える