Отображение местоположения в MySQL - PullRequest
0 голосов
/ 15 августа 2011

У меня есть две таблицы:

1) Одна из таблиц местоположений, которая хранится на телефоне Android, состоит из имени пользователя, широты, долготы, даты и времени.

2) Еще одна таблица, в которой я сохранил страну, регион, провинцию, почтовый индекс, город, широту, долготу.

Я хочу отобразить местоположение (lat, lng) таблицы 1), используя таблицу 2) перед вставкой в ​​db. Это выглядит просто, но проблема в том, что расположение таблицы 2) является просто устойчивой точкой, в противном случае расположение таблицы 1) - это точки, которые проходят через каждый город. Итак, расположение таблицы 1) не похоже на расположение таблицы 2).

У кого-нибудь есть идеи для этой проблемы? Любая формула или техника? Ценю вашу помощь.

edit: я пробовал это утверждение перед оператором вставки

$city  =  mysql_query("SELECT p.city
    FROM place AS p
    ORDER BY ACOS(SIN(p.lng)*SIN('".$lng."')+COS(p.lng)*COS('".$lng."')*COS(p.lat-'".$lat."'))",$con);

но результат равен Resource id #3 в поле, другие поля также отображаются следующим образом. с

Ответы [ 2 ]

1 голос
/ 15 августа 2011

так что-то вроде:

SELECT regions.*
FROM users, regions
WHERE users.user_id = $user_id
ORDER BY 
  ACOS ( 
    SIN(users.long) * SIN(regions.long) + 
    COS(users.long) * COS(regions.long) * COS(regions.lat - users.lat) 
  )
LIMIT 1

Добавлено 2011-08-15

или в PHP как ваш пример

$query  = "SELECT city
           FROM place
           ORDER BY
             ACOS(
               SIN(lng) * SIN({$lng}) +
               COS(lng) * COS({$lng}) * COS(lat - {$lat})
             )";
$resource = mysql_query($query);
$result = mysql_fetch_assoc($resource);
$city = $result['city'];
0 голосов
/ 17 августа 2011

Спасибо за каждую помощь.

$qc = mysql_query("SELECT *
    FROM place AS p
    ORDER BY MIN(ACOS(SIN(p.lng)*SIN({$lng})+COS(p.lng)*COS({$lng})*COS(p.lat-{$lat})))", $con);

while ($row = mysql_fetch_assoc($qc)) {
    $city = $row['city'];
    $district = $row['district'];
    $province = $row['province'];
    $region = $row['region'];
    $country = $row['country'];

    mysql_query("INSERT INTO " . $username . "_logs_" . $type . "(username,date,
                time,lat,lng,city,district,province,region,country,note,color)
                VALUES('".$username."','".$date."','".$time."',
                '".$lat."','".$lng."','".$city."','".$district."'
                ,'".$province."','".$region."','".$country."','unknown','unknown')", $con)
            or die("Cannot Insert to Table");
    mysql_close();
}

Это мой окончательный ответ. Я хочу поделиться с тем, кто слаб в запросе, как я:))

...