Home >Backend Development >PHP Tutorial >How to implement geographical positioning of WeChat mini programs in PHP

How to implement geographical positioning of WeChat mini programs in PHP

王林
王林Original
2023-06-01 08:16:511573browse

With the popularity of WeChat mini programs, geographical location positioning has become a problem that must be faced in the development of many mini programs. PHP is also a commonly used back-end language in mini program development. So how does PHP implement geographical positioning of WeChat mini programs?

1. Obtain the user’s geographical location

In the mini program, we need to first obtain the user’s geographical location information. This can be achieved through the API provided by WeChat. When the user opens the mini program, we can obtain the user's current geographical location information through the wx.getLocation() method, which requires passing in a callback function after the location is successfully obtained. The data returned by this function contains the user's longitude, latitude, accuracy and other information.

2. Parse the user’s geographical location

After obtaining the user’s geographical location information, we still need to parse it and turn it into specific available address information. This can be achieved through APIs such as Baidu Maps and Amap. Taking Baidu Map as an example, we need to send an HTTPS request to the Baidu Map API. The request must include the user's longitude and latitude. After the request is successful, the Baidu Map API will return the detailed address information of the location. The specific code is as follows:

$lat = $_GET['latitude'];
$lng = $_GET['longitude'];
$url = "https://api.map.baidu.com/reverse_geocoding/v3/";
$params = array(
    'ak' => 'your_ak',
    'output' => 'json',
    'location' => $lat.','.$lng
);
$api_params = http_build_query($params);
$api_url = $url.'?'.$api_params;
$result = file_get_contents($api_url);
$address = json_decode($result, true)['result']['formatted_address'];

It should be noted that when requesting Baidu Map API, you need to pass in your Baidu API key (AK) in the request URL. At the same time, after the request is successful, you will get a JSON The format string needs to be parsed to obtain the address information.

3. Save the user's geographical location information into the database

After obtaining the user's geographical location information and parsing it into a specific address, we can save this information into the database. In this process, we need to first create a geographical location information table, which needs to include at least the following fields:

+----+---------+----------+------------------+--------+
| id | user_id | latitude | longitude | address |
+----+---------+----------+------------------+--------+

Among them, id is the unique identifier of the record in the table; user_id is the corresponding record User ID; latitude and longitude are the latitude and longitude information corresponding to the record; address is the address information corresponding to the record.

The specific code is as follows:

$mysqli = new mysqli('localhost', 'username', 'password', 'db_name');
if (!$mysqli) {
    die('Could not connect:' . mysqli_error($mysqli));
}
$user_id = $_GET['user_id'];
$latitude = $_GET['latitude'];
$longitude = $_GET['longitude'];
$address = $_GET['address'];
$sql = "INSERT INTO location_info (user_id, latitude, longitude, address) VALUES ('$user_id', '$latitude', '$longitude', '$address')";
if (!$mysqli->query($sql) === TRUE) {
    echo "Error: " . $conn->error;
} else {
    echo "Success";
}
$mysqli->close();

It should be noted that when inserting records into the database, the incoming parameters need to be filtered and processed to avoid security issues such as SQL injection. The code here is for reference only, and the specific implementation needs to be modified and optimized according to business needs.

4. Query the user's geographical location information

After saving the user's geographical location information, we need to query it in order to display nearby people, businesses and other information in the mini program. The query statement is relatively simple, and the specific code is as follows:

$mysqli = new mysqli('localhost', 'username', 'password', 'db_name');
if (!$mysqli) {
    die('Could not connect:' . mysqli_error($mysqli));
}
$user_id = $_GET['user_id'];
$sql = "SELECT * FROM location_info WHERE user_id != '$user_id'";
$result = $mysqli->query($sql);
$users = array();
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $users[] = $row;
    }
}
echo json_encode($users);
$mysqli->close();

Here we query all records that do not include the current user, and return a user list in JSON format. It should be noted that in actual scenarios, we also need to filter and sort the returned data to improve query efficiency and result accuracy.

The above is the basic process of implementing geographical positioning of WeChat mini programs in PHP. Of course, the specific implementation also needs to be optimized and adjusted according to business needs. At the same time, since sensitive information such as user privacy is involved, we also need to strengthen data protection and security precautions to ensure that user information is not leaked.

The above is the detailed content of How to implement geographical positioning of WeChat mini programs in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn