如何使用 Laravel 10 Factory 制作有效的地点 lat、lng?

问题描述 投票:0回答:1

在带有工厂的 Laravel 10 站点上,我做了很多要点以在传单地图上显示它们:

        $city = $faker->city;
        $lat = $faker->latitude;
        $lng = $faker->longitude;

但是看起来城市名称和点不同,我需要带有有效纬度/经度的城市名称。如果可能的话,定义一些国家, 至于任何人我都有一个国家(2个字符代码)。 ?

"laravel/framework": "^10.48.12",
“8.0.36-0ubuntu0.22.04.1”

提前致谢!

laravel faker
1个回答
0
投票

有很多包含城市的列表,并且根据纬度和经度值:

我找到了这个。它很旧,但应该有足够的条目来帮助您继续: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 文件并选择大于一个的随机行,这可能会更有效地提高内存效率。

© www.soinside.com 2019 - 2024. All rights reserved.