在带有工厂的 Laravel 10 站点上,我做了很多要点以在传单地图上显示它们:
$city = $faker->city;
$lat = $faker->latitude;
$lng = $faker->longitude;
但是看起来城市名称和点不同,我需要带有有效纬度/经度的城市名称。如果可能的话,定义一些国家, 至于任何人我都有一个国家(2个字符代码)。 ?
"laravel/framework": "^10.48.12",
“8.0.36-0ubuntu0.22.04.1”
提前致谢!
有很多包含城市的列表,并且根据纬度和经度值:
我找到了这个。它很旧,但应该有足够的条目来帮助您继续:https://github.com/bahar/WorldCityLocations?tab=readme-ov-file
或者这个:https://simplemaps.com/data/world-cities。它有一个免费版本,需要归属,您可以在其中下载 CSV 或 XLSX 文件并从那里检索数据。下面是我如何读取数据并仅将必要的数据保存到 JSON 文件中的示例。然后,您可以使用该 JSON 文件中的随机城市。
$file = fopen(storage_path('worldcities.csv'), 'r');
$cities = [];
$row = 1;
while (($data = fgetcsv($file)) !== false) {
if($row === 1) {
$row++;
continue;
}
$cities[] = [
'city' => $data[0],
'lat' => $data[2],
'lng' => $data[3],
];
$row++;
}
fclose($file);
Storage::put('cities.json', json_encode($cities));
但是由于条目数量巨大,您必须小心。另一种方法是每次读取 CSV 文件并选择大于一个的随机行,这可能会更有效地提高内存效率。