当前位置: 首页 > 知识库问答 >
问题:

Android无法使用google api检索附近的位置

呼延才
2023-03-14

我试图通过使用谷歌地图的api来获取我发送的位置的附近位置。下面是url(https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362

日志e(“Res”,response.body()。getStatus());

我是不是用正确的方式进行改造?

我的客户。爪哇:

public class RetrofitClient {
    public static Retrofit retrofit=null;
     static final String baseurl="https://maps.googleapis.com/maps/api/place/nearbysearch/";
    public static Retrofit getClient()
    {
        if (retrofit==null)
        {
            retrofit=new Retrofit.Builder().baseUrl(baseurl).addConverterFactory(GsonConverterFactory.create()).build();
        }
        return retrofit;
    }
}

NearbyApi。爪哇:

public interface NearbyApi {
    @GET("json?")
    Call<NearbyPlaces> getDetails(@Query("location") String loc,
                                  @Query("radius") String radius,
                                  @Query("type") String type,
                                  @Query("keyword") String keyword,@Query("key") String key);

}

主要活动。爪哇:

String loc="-33.8670522,151.1957362";
    String radius="1500";
    String type="restaurant";
    String keyword="cruise";
    String key="****";
    NearbyApi nearbyApi=RetrofitClient.getClient().create(NearbyApi.class);
                        Call<NearbyPlaces> call=nearbyApi.getDetails(loc,radius,type,keyword,key);
                        call.enqueue(new Callback<NearbyPlaces>() {
                            @Override
                            public void onResponse(Call<NearbyPlaces> call, Response<NearbyPlaces> response) {

    //                                Log.e("Res",response.body().getStatus());
                                Log.e("Res",response.body().getStatus());
                                }

                            @Override
                            public void onFailure(Call<NearbyPlaces> call, Throwable t) {
                                Log.e("Response","Failure");
                            }
                        });

(NearbyPlaces.java)POJO类:

public class NearbyPlaces {

    @Expose
    @SerializedName("status")
    private String status;
    @Expose
    @SerializedName("results")
    private List<Results> results;
    @Expose
    @SerializedName("html_attributions")
    private List<String> html_attributions;

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public List<Results> getResults() {
        return results;
    }

    public void setResults(List<Results> results) {
        this.results = results;
    }

    public List<String> getHtml_attributions() {
        return html_attributions;
    }

    public void setHtml_attributions(List<String> html_attributions) {
        this.html_attributions = html_attributions;
    }

    public static class Results {
        @Expose
        @SerializedName("vicinity")
        private String vicinity;
        @Expose
        @SerializedName("types")
        private List<String> types;
        @Expose
        @SerializedName("scope")
        private String scope;
        @Expose
        @SerializedName("reference")
        private String reference;
        @Expose
        @SerializedName("rating")
        private int rating;
        @Expose
        @SerializedName("plus_code")
        private Plus_code plus_code;
        @Expose
        @SerializedName("place_id")
        private String place_id;
        @Expose
        @SerializedName("photos")
        private List<Photos> photos;
        @Expose
        @SerializedName("opening_hours")
        private Opening_hours opening_hours;
        @Expose
        @SerializedName("name")
        private String name;
        @Expose
        @SerializedName("id")
        private String id;
        @Expose
        @SerializedName("icon")
        private String icon;
        @Expose
        @SerializedName("geometry")
        private Geometry geometry;

        public String getVicinity() {
            return vicinity;
        }

        public void setVicinity(String vicinity) {
            this.vicinity = vicinity;
        }

        public List<String> getTypes() {
            return types;
        }

        public void setTypes(List<String> types) {
            this.types = types;
        }

        public String getScope() {
            return scope;
        }

        public void setScope(String scope) {
            this.scope = scope;
        }

        public String getReference() {
            return reference;
        }

        public void setReference(String reference) {
            this.reference = reference;
        }

        public int getRating() {
            return rating;
        }

        public void setRating(int rating) {
            this.rating = rating;
        }

        public Plus_code getPlus_code() {
            return plus_code;
        }

        public void setPlus_code(Plus_code plus_code) {
            this.plus_code = plus_code;
        }

        public String getPlace_id() {
            return place_id;
        }

        public void setPlace_id(String place_id) {
            this.place_id = place_id;
        }

        public List<Photos> getPhotos() {
            return photos;
        }

        public void setPhotos(List<Photos> photos) {
            this.photos = photos;
        }

        public Opening_hours getOpening_hours() {
            return opening_hours;
        }

        public void setOpening_hours(Opening_hours opening_hours) {
            this.opening_hours = opening_hours;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getIcon() {
            return icon;
        }

        public void setIcon(String icon) {
            this.icon = icon;
        }

        public Geometry getGeometry() {
            return geometry;
        }

        public void setGeometry(Geometry geometry) {
            this.geometry = geometry;
        }
    }

    public static class Plus_code {
        @Expose
        @SerializedName("global_code")
        private String global_code;
        @Expose
        @SerializedName("compound_code")
        private String compound_code;

        public String getGlobal_code() {
            return global_code;
        }

        public void setGlobal_code(String global_code) {
            this.global_code = global_code;
        }

        public String getCompound_code() {
            return compound_code;
        }

        public void setCompound_code(String compound_code) {
            this.compound_code = compound_code;
        }
    }

    public static class Photos {
        @Expose
        @SerializedName("width")
        private int width;
        @Expose
        @SerializedName("photo_reference")
        private String photo_reference;
        @Expose
        @SerializedName("html_attributions")
        private List<String> html_attributions;
        @Expose
        @SerializedName("height")
        private int height;

        public int getWidth() {
            return width;
        }

        public void setWidth(int width) {
            this.width = width;
        }

        public String getPhoto_reference() {
            return photo_reference;
        }

        public void setPhoto_reference(String photo_reference) {
            this.photo_reference = photo_reference;
        }

        public List<String> getHtml_attributions() {
            return html_attributions;
        }

        public void setHtml_attributions(List<String> html_attributions) {
            this.html_attributions = html_attributions;
        }

        public int getHeight() {
            return height;
        }

        public void setHeight(int height) {
            this.height = height;
        }
    }

    public static class Opening_hours {
        @Expose
        @SerializedName("open_now")
        private boolean open_now;

        public boolean getOpen_now() {
            return open_now;
        }

        public void setOpen_now(boolean open_now) {
            this.open_now = open_now;
        }
    }

    public static class Geometry {
        @Expose
        @SerializedName("viewport")
        private Viewport viewport;
        @Expose
        @SerializedName("location")
        private Location location;

        public Viewport getViewport() {
            return viewport;
        }

        public void setViewport(Viewport viewport) {
            this.viewport = viewport;
        }

        public Location getLocation() {
            return location;
        }

        public void setLocation(Location location) {
            this.location = location;
        }
    }

    public static class Viewport {
        @Expose
        @SerializedName("southwest")
        private Southwest southwest;
        @Expose
        @SerializedName("northeast")
        private Northeast northeast;

        public Southwest getSouthwest() {
            return southwest;
        }

        public void setSouthwest(Southwest southwest) {
            this.southwest = southwest;
        }

        public Northeast getNortheast() {
            return northeast;
        }

        public void setNortheast(Northeast northeast) {
            this.northeast = northeast;
        }
    }

    public static class Southwest {
        @Expose
        @SerializedName("lng")
        private double lng;
        @Expose
        @SerializedName("lat")
        private double lat;

        public double getLng() {
            return lng;
        }

        public void setLng(double lng) {
            this.lng = lng;
        }

        public double getLat() {
            return lat;
        }

        public void setLat(double lat) {
            this.lat = lat;
        }
    }

    public static class Northeast {
        @Expose
        @SerializedName("lng")
        private double lng;
        @Expose
        @SerializedName("lat")
        private double lat;

        public double getLng() {
            return lng;
        }

        public void setLng(double lng) {
            this.lng = lng;
        }

        public double getLat() {
            return lat;
        }

        public void setLat(double lat) {
            this.lat = lat;
        }
    }

    public static class Location {
        @Expose
        @SerializedName("lng")
        private double lng;
        @Expose
        @SerializedName("lat")
        private double lat;

        public double getLng() {
            return lng;
        }

        public void setLng(double lng) {
            this.lng = lng;
        }

        public double getLat() {
            return lat;
        }

        public void setLat(double lat) {
            this.lat = lat;
        }
    }
}

共有1个答案

汪典
2023-03-14

如果你已经有了API密钥,如果没有,

https://developers.google.com/places/web-service/get-api-key

一旦你得到你的api密钥并且你想要启用api和服务,你总是可以转到你的api控制台并启用api和服务,

去https://console.cloud.google.com/apis/dashboard?YOUR_PROJECT

点击启用API按钮

启用要使用的API和服务。

您应该为Android和任何其他您可能想要使用的服务启用Maps SDK。

更新:

如果您正在发出Http请求(例如@GET),请确保您没有在API控制台中对您的API设置限制。因此,您需要转到生成的密钥,找到以下内容,并设置为无限制,

如果只选择Android,会发生什么?您将能够使用所选SDK中的任何对象和方法(例如地点/地图)。

例如,places API中的PlacePicker对象。

我从开发者网站上引用了PlacesSDK,

https://developers.google.com/places/android-sdk/intro

但是,如果您想发出HTTP请求,那么它将被拒绝,因为您在密钥中设置了限制。

 类似资料:
  • 我正在考虑开发一款Android应用程序,它可以检测附近所有或大部分打开的移动设备(iPhone、Android等)。我不需要与这些设备交互,只需要检测它们,并且要求检测到的设备不需要安装任何特殊/不寻常的应用程序。 我已经考虑了几种方法来做到这一点(以某种方式检测蓝牙、wifi或蜂窝传输/标识符),但我正在寻找一种检测相对较大比例的附近设备的具体实现方法。我不确定这些方法中的哪些是可能的/可行的

  • 我有如下结构的数据库。如何在5公里内location_id。有纬度和经度的数字已经在数据库表中。请参阅我的数据库结构图像。 以下是数据库结构图像: 我已经从这个链接搜索如何找到最近的位置使用纬度和经度从sql数据库?我不明白密码。 SELECT id,(3959*acos(cos(弧度(37))*cos(弧度(lat ) ) * cos(弧度(lng)-弧度(-122))sin(弧度(37))*s

  • 问题内容: 我正在尝试在Google地图的左上角显示a ,以告知用户距特定标记点位置的x距离,即“您靠近位置A”,但仅显示if在范围内。如果它们超出范围,则将消失。 我了解Google Places API会向您显示所有附近的位置,但是我只想显示用户在地图上具有x距离的标记在附近的位置。 我该如何实现?我仍然需要使用Google Places API吗? 我的课程.java: map.xml 有人

  • 附近地点搜索 题目详情 找一个点集中与给定点距离最近的点,同时,给定的二维点集都是固定的,查询可能有很多次,时间复杂度O(n)无法接受,请设计数据结构和相应的算法。 分析与解法 此题是去年微软的三面题,类似于一朋友@陈利人出的这题:附近地点搜索,就是搜索用户附近有哪些地点。随着GPS和带有GPS功能的移动设备的普及,附近地点搜索也变得炙手可热。在庞大的地理数据库中搜索地点,索引是很重要的。但是,我

  • 如何在flutter应用程序中从google maps中检索我附近位置的数据

  • 问题内容: 如何使用Python在Windows上检索附近的无线LAN网络的信号强度? 我想显示或绘制值。 问题答案: 如果您使用的是 Windows ,则可能要 使用WLAN API ,该 API 提供了“ WlanGetAvailableNetworkList()”功能(有关用法,请参阅API文档)。我不知道有任何python包装器,因此您可能必须使用ctypes自己包装它。我有一个初步的脚本