我使用Google地理位置和其他资源,通过IP,Lang和Lat获取用户位置。
但所有结果都是错误的。需要在移动电话上集成位置检测器,这些检测器总是准确的。
先谢谢。
答案 0 :(得分:0)
可以使用包GeoIP2(已取代GeoIP)来完成此操作。您可以使用编辑器安装软件包,并链接free database或从MaxMind购买更准确的数据库,具体取决于您希望的准确程度(城市,国家/地区等)。
取自Github的代码示例:
<?php
require_once 'vendor/autoload.php';
use GeoIp2\Database\Reader;
// This creates the Reader object, which should be reused across
// lookups.
$reader = new Reader('/usr/local/share/GeoIP/GeoIP2-City.mmdb');
// Replace "city" with the appropriate method for your database, e.g.,
// "country".
$record = $reader->city('128.101.101.101');
print($record->country->isoCode . "\n"); // 'US'
print($record->country->name . "\n"); // 'United States'
print($record->country->names['zh-CN'] . "\n"); // '美国'
print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota'
print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN'
print($record->city->name . "\n"); // 'Minneapolis'
print($record->postal->code . "\n"); // '55455'
print($record->location->latitude . "\n"); // 44.9733
print($record->location->longitude . "\n"); // -93.2323
免费数据库并不错,但我建议购买专业数据库,如果你需要它,尽可能准确无需使用GPS。这主要是因为当IP块出售等时,列表会经常更新...