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

Jun 01, 2023 am 08:16 AM
php WeChat applet geotargeting

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'];
Copy after login

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 |
+----+---------+----------+------------------+--------+
Copy after login

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();
Copy after login

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();
Copy after login

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 of this Website
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

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

CakePHP Date and Time

CakePHP Project Configuration CakePHP Project Configuration Sep 10, 2024 pm 05:25 PM

CakePHP Project Configuration

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

CakePHP File upload

CakePHP Routing CakePHP Routing Sep 10, 2024 pm 05:25 PM

CakePHP Routing

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

Discuss CakePHP

CakePHP Quick Guide CakePHP Quick Guide Sep 10, 2024 pm 05:27 PM

CakePHP Quick Guide

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

How To Set Up Visual Studio Code (VS Code) for PHP Development

See all articles