109.【Java最全腾讯地图接口】(二)

简介: 109.【Java最全腾讯地图接口】

6.关键词输入提示

package com.jsxs.TentcentMap.keywordInputPrompt;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.jsxs.TencentMapUtils.TencentMapUtils;
/**
 * @Author Jsxs
 * @Date 2023/4/5 14:45
 * @PackageName:com.jsxs.TentcentMap.keywordInputPrompt
 * @ClassName: keywordInputPrompt
 * @Description: TODO 关键词输入提示
 * @Version 1.0
 */
public class keywordInputPrompt {
    public static JSONArray getKeywordInputPrompt(String region,String keyword,String key){
        String keyURL="https://apis.map.qq.com/ws/place/v1/suggestion/?region="+region+"&keyword="+keyword+"&key="+key;
        // 1.JSON字符串
        String s = TencentMapUtils.getTencentMap(keyURL).toString();
        // 2.JSON字符串转JSON对象
        JSONObject jsonObject = JSONObject.parseObject(s);
        // 3.获取JSON数组
        JSONArray data = (JSONArray)jsonObject.get("data");
        return data;
    }
    public static void main(String[] args) {
        // 范围、关键字、密钥
        JSONArray array = getKeywordInputPrompt("永川", "超市", "xxx");
        for (int i = 0; i < array.size(); i++) {
            System.out.println(array.getJSONObject(i).get("title")+" "+array.getJSONObject(i).get("address"));
        }
    }
}

7.地址纠正补全(地址标准化)

package com.jsxs.TentcentMap.addressStandardization;
import com.alibaba.fastjson.JSONObject;
import com.jsxs.TencentMapUtils.TencentMapUtils;
/**
 * @Author Jsxs
 * @Date 2023/4/5 15:20
 * @PackageName:com.jsxs.TentcentMap.addressStandardization
 * @ClassName: addressStandardization
 * @Description: TODO 地址标准化
 * @Version 1.0
 */
public class addressStandardization {
    public static String getAddressStandardization(String address,String key){
        String keyURL="https://apis.map.qq.com/ws/smart_address/address_complete?address="+address+"&key="+key;
        // 1.JSON字符串
        String s = TencentMapUtils.getTencentMap(keyURL).toString();
        // 2.JSON字符串转换为JSON对象
        JSONObject jsonObject = JSONObject.parseObject(s);
        JSONObject result = (JSONObject)jsonObject.get("result");
        String completed_address = result.get("completed_address")+"";
        return completed_address;
    }
    public static void main(String[] args) {
        System.out.println(getAddressStandardization("河南周口商水","你的密钥"));
    }
}

8.IP定位 (误差很大)

搞网络通信应用开发的程序员,可能会经常听到外网IP(即互联网IP地址)和内网IP(即局域网IP地址)

  1. 我们都知道,IPv4中的IP地址的数量是有限的(所以现在都在搞IPv6嘛),每次把一部分地址分配出去,那么就意味着能够用来分配的IP地址就更少了,而且随着现在手机,电脑等的快速发展,如果每个手机或者电脑都要求一个IP地址,那么显然IP地址是不够用的。
  2. 为了解决这个问题,我们可以采取这样的策略:例如对于一个公司来说,每个公司都会有一个属于自己公司的内网(也可以称之为局域网)。
  3. 内网(学名应叫局域网(Local Area Network,LAN))是在一个局部的地理范围内,一般可以是是几米内(比如家庭内网),也可以是方圆几千米以内(比如一个大学内网),将各种计算机、外部设备和数据库等互相联接起来组成的计算机通信网

内网主要作用有:

  1. 共享传输信道:简单地理解就是不需要每台电脑一个外网IP地址;
  2. 传输速率高:内网之间的电脑因为没有外网网络拓扑的复杂性,所以互相通信的网络可以很快,比如从一个台电脑向另一台电脑复制一个几G的文件可能只需要数十秒时间。
  3. 误码率低:因为通信距离很近,所以误码率很低,换句话说就是网络很稳定(老一点的程序员都知道,读大学的时候同一个宿舍内网联网玩C/S游戏,几乎不会遇到断网或卡顿的事情,除非有人下毛片或者把网络给拔了,哈哈)。
package com.jsxs.TentcentMap.ipPositioning;
import com.alibaba.fastjson.JSONObject;
import com.jsxs.TencentMapUtils.TencentMapUtils;
/**
 * @Author Jsxs
 * @Date 2023/4/5 15:49
 * @PackageName:com.jsxs.TentcentMap.ipPositioning
 * @ClassName: ipPositioning
 * @Description: TODO   IP定位
 * @Version 1.0
 */
public class ipPositioning {
    public static JSONObject getIpPositioning(String ip,String key){
        String keyURL="https://apis.map.qq.com/ws/location/v1/ip?ip="+ip+"&key="+key;
        String s = TencentMapUtils.getTencentMap(keyURL).toString();
        JSONObject jsonObject = JSONObject.parseObject(s);
        JSONObject result = (JSONObject)jsonObject.get("result");
        JSONObject ad_info = (JSONObject)result.get("ad_info");
        return ad_info;
    }
    public static void main(String[] args) {
        // 外网: 我们的服务器的IP就是外网。这里的IP是外网、不是局域网。
        System.out.println(getIpPositioning("你的外网IP","你的密钥"));
    }
}

9.智能硬件定位(误差极小) -尚未授权❌

注意: (一定要是商业用户,才能调用此接口!!! 本博主没有.)

智能硬件专用工具类

package com.jsxs.TencentMapUtils;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
/**
 * @Author Jsxs
 * @Date 2023/4/5 16:33
 * @PackageName:com.jsxs.TencentMapUtils
 * @ClassName: TencentMapUtilsPost
 * @Description: TODO   智能硬件定位专用
 * @Version 1.0
 */
public class TencentMapUtilsPost {
    //post请求的方法重载
    public static StringBuffer TencentUtilsPost(String url,String key,String device_id) throws IOException {
        URL obj = new URL(url);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        // 设置请求方式为POST
        con.setRequestMethod("POST");
        // 设置请求参数
        String urlParameters = "key="+key+"&device_id="+device_id;
        // 发送POST请求
        con.setDoOutput(true);
        DataOutputStream wr = new DataOutputStream(con.getOutputStream());
        wr.writeBytes(urlParameters);
        wr.flush();
        wr.close();
        // 获取响应结果
        int responseCode = con.getResponseCode();
        System.out.println("Response Code : " + responseCode);
        BufferedReader in = new BufferedReader(
                new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        return response;
    }
}

获取地址!!!!

package com.jsxs.TentcentMap.intelligentHardwarePositioning;
import com.jsxs.TencentMapUtils.TencentMapUtilsPost;
import java.io.*;
public class intelligentHardwarePositioning {
    public static void main(String[] args) throws IOException {
        String url = "https://apis.map.qq.com/ws/location/v1/network";
        String key = "2YPBZ-OLPL3-KW33Z-3KUGO-IOS7S-LSFOX";
        String device_id = "D3052B6F-D6AA-EB11-810A-489EBD0BFF28";
        StringBuffer response = TencentMapUtilsPost.TencentUtilsPost(url, key, device_id);
        // 输出响应结果
        System.out.println(response.toString());
    }
}

没有商户授权,调用不了这个接口

10.路线规划(驾车/公交/步骑)

(1).路线规划-驾车模式
package com.jsxs.TentcentMap.routePlanning;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.jsxs.TencentMapUtils.TencentMapUtils;
/**
 * @Author Jsxs
 * @Date 2023/4/5 20:00
 * @PackageName:com.jsxs.TentcentMap.routePlanning
 * @ClassName: Driving
 * @Description: TODO  驾车
 * @Version 1.0
 */
public class Driving {
    public static JSONArray getDriving(String startLan,String startLon,String endLan,String endLon,String key){
        String keyURL="https://apis.map.qq.com/ws/direction/v1/driving/?from="+startLan+","+startLon+"&to="+endLan+","+endLon+"&key="+key;
        System.out.println(keyURL);
        String s = TencentMapUtils.getTencentMap(keyURL).toString();
        // 2. JSON字符串转换为JSON对象
        JSONObject jsonObject = JSONObject.parseObject(s);
        JSONObject result = (JSONObject)jsonObject.get("result");
        JSONArray routes = (JSONArray)result.get("routes");
        return routes;
    }
    public static void main(String[] args) {
        JSONArray array = getDriving("39.915285", "116.403857", "39.915285", "116.803857", "你的密钥");
        System.out.println("总距离是:"+array.getJSONObject(0).get("distance")+"米");
        System.out.println("预计消耗时间是:"+array.getJSONObject(0).get("duration")+"分钟");
        // 详细方案的数组
        JSONArray steps = (JSONArray)array.getJSONObject(0).get("steps");
        for (int i = 0; i < steps.size(); i++) {
            System.out.println(steps.getJSONObject(i).get("instruction")+" -》 注意是:"+steps.getJSONObject(i).get("act_desc"));
        }
    }
}

相关文章
【零基础学Java】—接口(二十四)
【零基础学Java】—接口(二十四)
|
7月前
|
Java
Java基础—笔记—接口篇
接口是Java中的一个抽象概念,用于创建数据结构,类似于更纯粹的抽象类。定义包括常量(默认public static final)和抽象方法(默认public abstract)。接口通过子类实现,如`public class 子类 implements 接口1, 接口2...`。JDK8后增加了默认方法(通过子类对象调用)和静态方法(通过接口名调用)。JDK9引入了私有方法,仅在接口默认方法中调用。目的是在不修改子类的情况下扩展功能。一个类可以继承一个父类并实现多个接口,一个接口可继承多个接口。
41 0
|
19天前
|
Java
在Java中如何实现接口?
实现接口是 Java 编程中的一个重要环节,它有助于提高代码的规范性、可扩展性和复用性。通过正确地实现接口,可以使代码更加灵活、易于维护和扩展。
42 3
|
Java 定位技术
109.【Java最全腾讯地图接口】(一)
109.【Java最全腾讯地图接口】
265 1
|
Java 定位技术
109.【Java最全腾讯地图接口】(三)
109.【Java最全腾讯地图接口】
135 1
|
存储 JSON Java
109.【Java最全腾讯地图接口】(四)
109.【Java最全腾讯地图接口】
137 1
|
API
java202303java学习笔记第二十五天-常用api之4
java202303java学习笔记第二十五天-常用api之4
87 0
java202303java学习笔记第二十五天-常用api之4
java202303java学习笔记第二十三天-接口中新增方法2
java202303java学习笔记第二十三天-接口中新增方法2
69 0
|
API
java202303java学习笔记第二十五天-常用api之1
java202303java学习笔记第二十五天-常用api之1
84 0
|
API
java202303java学习笔记第二十五天-常用api之2
java202303java学习笔记第二十五天-常用api之2
76 0