谷歌地图api的使用 一

一、注册账号

使用谷歌地图api,需要注册一个谷歌账号,并创建一个你的项目,在项目中开通你所需要的api。
谷歌地图api网址:https://cloud.google.com/maps-platform/?hl=zh-CN 具体的注册和开通在这就不做描述了,网上搜索既有。

二、api请求实例

谷歌api库:https://console.cloud.google.com/apis/library?folder=&organizationId=&project=virtual-core-212801
在这里,有所有谷歌开放的api接口详细描述和接口文档。
在这里插入图片描述
其中涉及到谷歌地图的有15中。在这里我们选择其中一个作为示例。
首先需要将Geocoding API接口起用。并获取ak。
该api 的功能是:将地址转换为地理坐标(地理编码),您可以使用它来放置标记或定位地图。这个API还允许您将地理坐标转换成地址(反向地理编码)。

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "东城区",
               "short_name" : "东城区",
               "types" : [ "political", "sublocality", "sublocality_level_1" ]
            },
            {
               "long_name" : "北京市",
               "short_name" : "北京市",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "中国",
               "short_name" : "CN",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "中国北京市东城区",
         "geometry" : {
            "location" : {
               "lat" : 39.9087202,
               "lng" : 116.3974799
            },
            "location_type" : "GEOMETRIC_CENTER",
            "viewport" : {
               "northeast" : {
                  "lat" : 39.91006918029149,
                  "lng" : 116.3988288802915
               },
               "southwest" : {
                  "lat" : 39.90737121970849,
                  "lng" : 116.3961309197085
               }
            }
         },
         "place_id" : "ChIJ2XRD3Jh2YzYRmjlIoYPLKGk",
         "plus_code" : {
            "compound_code" : "W95W+FX 中国北京市东城区",
            "global_code" : "8PFRW95W+FX"
         },
         "types" : [ "establishment", "point_of_interest" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "东城区",
               "short_name" : "东城区",
               "types" : [ "political", "sublocality", "sublocality_level_1" ]
            },
            {
               "long_name" : "北京市",
               "short_name" : "北京市",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "中国",
               "short_name" : "CN",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "中国北京市东城区",
         "geometry" : {
            "location" : {
               "lat" : 39.9054895,
               "lng" : 116.3976317
            },
            "location_type" : "GEOMETRIC_CENTER",
            "viewport" : {
               "northeast" : {
                  "lat" : 39.9068384802915,
                  "lng" : 116.3989806802915
               },
               "southwest" : {
                  "lat" : 39.9041405197085,
                  "lng" : 116.3962827197085
               }
            }
         },
         "place_id" : "ChIJ2XRD3Jh2YzYRE1lUrcku6io",
         "plus_code" : {
            "compound_code" : "W94X+53 中国北京市东城区",
            "global_code" : "8PFRW94X+53"
         },
         "types" : [ "establishment", "point_of_interest" ]
      }
   ],
   "status" : "OK"
}

这其中就包括我们想要的数据:“geometry”经纬度,并且还有地址描述信息,比如:“address_components” 从按照等级描述了北京天安门的行政地理信息,中国-北京市-东城区。以及“formatted_address”格式化好的信息 “formatted_address” : “中国北京市东城区”。
通常我们需要在后台进行地址数据处理来获取经纬度或者其他地理信息,那么这时候问题来了。由于政治上的一些原因后台无法访问到接口,面对这个问题, 我也是搜遍了网上的资料和方法。最终找到了解决办法,那就是将原来的接口域名https://maps.googleapis.com 改为 https://ditu.google.cn,那么我们上边的接口改为 https://ditu.google.cn/maps/api/geocode/json?address=北京天安门&key=你的ak。我们来测试下:
在这里插入图片描述
效果和第一次一样。
下边放到java后台代码中进行测试:

public static String getLngLat(String address) {
        String code = HttpClientUtil.doGet("https://ditu.google.cn/maps/api/geocode/json?address=" + address
                + "&key=你的ak");
        com.alibaba.fastjson.JSONObject jsonObjectOri = com.alibaba.fastjson.JSONObject.parseObject(code);
        // 获取解析状态
        String status = jsonObjectOri.getString("status");
        if (status == "OK" || "OK".equals(status)) {// 解析的地址不为空时 进行值的获取
            JSONObject results = (JSONObject) jsonObjectOri.getJSONArray("results").get(0);
            JSONObject geometry = JSONObject.parseObject(results.getString("geometry"));
            JSONObject lng_lat = JSONObject.parseObject(geometry.getString("location"));
            String lng = lng_lat.getString("lng");
            String lat = lng_lat.getString("lat");
            String lngLat = lat + "," + lng;
            return "获取成功!"+address+"的经纬度信息为:"+lngLat;
        }
        return "获取失败!";
    }

执行main方法调用
在这里插入图片描述

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值