Java根據地名獲取所在省,市,縣


設計思想,首先調用百度地圖API查詢地名對應的經度和緯度,然后根據經度和緯度查詢所在省,市,縣

package com.lq;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
import net.sf.json.JSONObject;
public class Test {
    /**
     * 百度地圖通過經緯度來獲取地址,傳入參數緯度lat、經度lng
     * @param lat
     * @param lng
     * @return
     */
    public static String getCity(String lat, String lng) 
    {    
        JSONObject obj = getLocationInfo(lat, lng).getJSONObject("result").getJSONObject("addressComponent");
        String province,city,district;
        province=obj.getString("province");
        city=obj.getString("city");
        district=obj.getString("district");    
        if(province.equals(city))
        {
            System.out.println(city+district);
            return city+district;
        }
        else
        {
            System.out.println(province+city+district);
            return province+city+district;
        }

    }    

    public static JSONObject getLocationInfo(String lat, String lng)
    {    
        String url = "http://api.map.baidu.com/reverse_geocoding/v3/?ak=ltGIgbvqAEeZFjyOhVFS0jVmE1HpRn9K"
                + "&output=json&coordtype=wgs84ll&location="+ lat + "," + lng ;
        JSONObject obj = JSONObject.fromObject(loadJSON(url));
        return obj;
    }

 

    /**
     * 百度地圖通過地址來獲取經緯度,傳入參數address
     * @param address
     * @return
     */
    public static Map<String,Double> getLngAndLat(String address)
    {
        Map<String,Double> map=new HashMap<String, Double>();
        String url = "http://api.map.baidu.com/geocoding/v3/?address="+address+"&output=json&ak=ltGIgbvqAEeZFjyOhVFS0jVmE1HpRn9K"
                + "&coordtype=wgs84ll";
        JSONObject obj = JSONObject.fromObject(loadJSON(url));
        //System.out.println(obj);
        if(obj.get("status").toString().equals("0"))
        {
            double lng=obj.getJSONObject("result").getJSONObject("location").getDouble("lng");
            double lat=obj.getJSONObject("result").getJSONObject("location").getDouble("lat");
            map.put("lng", lng);
            map.put("lat", lat);
            System.out.println("經度:" + lng + "--- 緯度:" + lat);

        }else{
            map.put("lng", 0.00);
            map.put("lat", 0.00);
        }
        return map;
    }

    public static String loadJSON (String url) 
    {
        StringBuilder json = new StringBuilder();
        try {
            URL oracle = new URL(url);
            URLConnection yc = oracle.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
            String inputLine = null;
            while ( (inputLine = in.readLine()) != null) {
                json.append(inputLine);
            }
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return json.toString();
    }

    public static void main(String[] args)
    {
        String area="北京市水科學技術研究院";
         Map<String,Double> map=new HashMap<String, Double>();
         map=getLngAndLat(area);
         String lat=""+map.get("lat");
         String lng=""+map.get("lng");
         getCity(lat, lng);
    }
}

運行截圖:

  

 python獲取本機的外網IP:

import requests
import re

def getIP():
    headers = {}
    headers['User-Agent'] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
    response = requests.get('http://txt.go.sohu.com/ip/soip',headers=headers)
    html = response.text
    reGET = re.compile(r'\d+.\d+.\d+.\d+.').findall(html)
    for i in reGET:
        print('外網地址: %s'%i)
getIP()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM