我想为我的应用程序使用全天候API。为此,我认为我可能可以在自己的应用程序中将城市及其ID保存在json文件中,并且每当我用户想要位置天气时,应用程序都会从json中选择城市的ID并进行API调用。
为此,我下载了Openweather提供的30MB Json文件,其中包含所有国家/地区及其所有城市。在我的应用中放置30MB显然不是一个好主意。所以我决定只提取我的乡村城市。但问题是,这个想法无法完成。因此来自不同国家的许多城市都使用相同的名称。然后提取的json又很大了。甚至某些国家(地区)代码都是其他国家/地区的城市。
我想知道是否有更好的实现方法。或仅提取一个国家的城市的任何想法或方法。
在我的应用中为不同城市实施天气预报的任何帮助将不胜感激
答案 0 :(得分:1)
我知道这个问题很旧,但是最近我也遇到了这个问题。我最终的方法是将$access_token = 'YOUR ACCESS TOKEN';
$username = 'rudrastyh';
$user_search = rudr_instagram_api_curl_connect("https://api.instagram.com/v1/users/search?q=" . $username . "&access_token=" . $access_token);
// $user_search is an array of objects of all found users
// we need only the object of the most relevant user - $user_search->data[0]
// $user_search->data[0]->id - User ID
// $user_search->data[0]->first_name - User First name
// $user_search->data[0]->last_name - User Last name
// $user_search->data[0]->profile_picture - User Profile Picture URL
// $user_search->data[0]->username - Username
$user_id = $user_search->data[0]->id; // or use string 'self' to get your own media
$return = rudr_instagram_api_curl_connect("https://api.instagram.com/v1/users/" . $user_id . "/media/recent?access_token=" . $access_token);
//var_dump( $return ); // if you want to display everything the function returns
foreach ($return->data as $post) {
echo '<a href="' . $post->images->standard_resolution->url . '"><img src="' . $post->images->thumbnail->url . '" /></a>';
放入默认的导出JSON对象中,并编写一个节点脚本,然后按国家/地区代码删除城市:
city.list.json
这完全有效!然后我遇到的唯一问题是var fs = require('fs');
var cityList = require('./city.list.js');
let output = {};
let countryCodes = [];
cityList.forEach((city) => {
const country = city.country;
if (country) {
if (!countryCodes.includes(country)) {
countryCodes.push(country);
}
if (!output[country]) {
output[country] = [];
}
output[country].push({
id: city.id,
name: city.name,
});
}
});
for (const [key, value] of Object.entries(output)) {
const fileName = 'city.' + key.toLowerCase() + '.json';
fs.writeFile(fileName, JSON.stringify(value), function (err) {
if (err) console.error(err.message);
console.log(fileName + ' - saved!');
});
}
fs.writeFile('countrycodes.json', JSON.stringify(countryCodes), function (err) {
if (err) console.error(err.message);
console.log('countrycodes.json' + ' - saved!');
});
包含国家/地区名称,并且它们在数据中没有区别...