调用腾讯地图api获取国内景点经纬度信息存到json文件

两个实体类:

public class JDList
    {
        public string jdName { get; set; }
        public string location { get; set; }
    }

    public class Rootobject
    {
        public int status { get; set; }
        public string message { get; set; }
        public int count { get; set; }
        public List<Datum> data { get; set; }
        public string request_id { get; set; }
    }

    public class Datum
    {
        public string id { get; set; }
        public string title { get; set; }
        public string address { get; set; }
        public string category { get; set; }
        public int type { get; set; }
        public Location location { get; set; }
        public int adcode { get; set; }
        public string province { get; set; }
        public string city { get; set; }
        public string district { get; set; }
    }

    public class Location
    {
        public float lat { get; set; }
        public float lng { get; set; }
    }

添加一个app.config文件内容:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Address" value="北京,天津,上海,澳门,香港,重庆,内蒙古,广西,西藏,宁夏,新疆,河北,山西,辽宁,吉林,黑龙江,江苏,浙江,安徽,福建,江西,山东,河南,湖北,湖南,广东,海南,四川,贵州,云南,陕西,甘肃,青海,台湾"/>
  </appSettings>
</configuration>

窗体代码:

public partial class Form1 : Form
    {
        private Rootobject root = new Rootobject();
        private List<JDList> jdList = new List<JDList>();
        List<string> addList = new List<string>();
        public Form1()
        {
            string[] address = ConfigurationManager.AppSettings["Address"].Split(',');
            InitializeComponent();
            label1.Visible = false;
            foreach (var item in address)
            {
                addList.Add(item);
            }
        }

        private void Getjson(string add)
        {
            string strURL = $"https://apis.map.qq.com/ws/place/v1/suggestion/?region={add}&keyword=旅游景点&key=你自己申请的key";
            HttpWebRequest request;
            // 创建一个HTTP请求
            request = (HttpWebRequest)WebRequest.Create(strURL);
            //request.Method="get";
            HttpWebResponse response;
            response = (HttpWebResponse)request.GetResponse();
            StreamReader myreader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
            string responseText = myreader.ReadToEnd();
            myreader.Close();
            root = new Rootobject();
            root = JsonConvert.DeserializeObject<Rootobject>(responseText);

            if (root.data != null)
            {
                foreach (var item in root.data)
                {
                    JDList jd = new JDList();
                    jd.jdName = item.city + item.title;
                    jd.location = item.location.lng.ToString() + "," + item.location.lat.ToString();
                    jdList.Add(jd);
                }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            label1.Visible = true;
            label1.ForeColor = Color.Red;
            label1.Text = "正在下载......";

            TaskFactory fac = new TaskFactory();
            List<Task> tasklist = new List<Task>();
            tasklist.Add(fac.StartNew(() => GetJDNameList()));
            Task.WaitAll(tasklist.ToArray());

            label1.Visible = false;
        }

        private void GetJDNameList()
        {
            foreach (var item in addList)
            {
                Thread.Sleep(500);
                Getjson(item);
            }
            string json = JsonConvert.SerializeObject(jdList);
            FileStream fs = new FileStream("景点.json", FileMode.Create);//在程序根目录下创建txt文件
            StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);//创建写文件的流
            sw.WriteLine(json);
            sw.Close();
            fs.Close();
            MessageBox.Show("下载完成");
        }
    }

文章转自码农猩球。原文链接: http://www.dotnetstar.club/c/10104

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值