public interface LocationApiService {
@GET("json")
Call<GeoResponse> getLocation();
}
获取地理应用程序服务()
public static final String BASE_URL = "http://ip-api.com/";
public static LocationApiService getGeoApiService() {
return new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(LocationApiService.class);
}
地理响应
public class GeoResponse {
private String as;
private String city;
private String country;
private String countryCode;
private String isp;
@SerializedName("lat")
private double latitude;
@SerializedName("lon")
private double longitude;
private String org;
private String query;
private String region;
private String regionName;
private String timezone;
@Override
public String toString() {
return "countryCode: " + countryCode + ", isp: " + isp + ", city: " + city;
}
public String getAs() {
return as;
}
public void setAs(String as) {
this.as = as;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getCountryCode() {
return countryCode;
}
public void setCountryCode(String countryCode) {
this.countryCode = countryCode;
}
public String getIsp() {
return isp;
}
public void setIsp(String isp) {
this.isp = isp;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
public String getOrg() {
return org;
}
public void setOrg(String org) {
this.org = org;
}
public String getQuery() {
return query;
}
public void setQuery(String query) {
this.query = query;
}
public String getRegion() {
return region;
}
public void setRegion(String region) {
this.region = region;
}
public String getRegionName() {
return regionName;
}
public void setRegionName(String regionName) {
this.regionName = regionName;
}
public String getTimezone() {
return timezone;
}
public void setTimezone(String timezone) {
this.timezone = timezone;
}
}
6条答案
按热度按时间btqmn9zl1#
我们可以通过简单的API调用来获得位置,但它的准确性很低。
位置应用程序服务
获取地理应用程序服务()
地理响应
6rqinv9w2#
checkout Google Maps Geolocation API
POST示例:
样本响应:
限值:
标准API的用户:
每天2,500次免费查询每个用户每秒10次查询启用即用即付计费以解锁更高的配额:
0.50美元/ 1000次额外查询,每天最多100,000次。
MORE
slwdgvem3#
有几个网络服务,它为您提供纬度和经度值从IP地址。
其中一个例子是 API*
例如,你可以通过发送请求来获取纬度和经度,例如
这将返回json格式的数据,并且您可以通过设置format=xml获得XML格式的响应(您需要注册以获得API密钥)。
也可以从this和this链接下载数据库。
你可以下载数据集,但你必须不断更新它。
oaxa6hgo4#
我使用this获取设备的IP、国家和城市
为了测试,你可以使用RESTCLIENT,firefox的插件来发出HTTP请求。
只需复制https://addons.mozilla.org/en-us/firefox/addon/restclient/此URL并在RESTCLIENT中测试或在浏览器地址栏中测试
希望这对您有帮助!
mspsb9vt5#
您可以使用freegeoip.net。
这是一个免费的开源服务,你可以直接使用它,也可以在你的个人服务器上运行它,它也可以很容易地部署到Heroku上。
要获取IP位置,只需使用OkHttp发送http/https请求:
结果会是这样的:
n6lpvg4x6#
使用ip地址获取位置详细信息
限制:每分钟45个来自IP地址的请求
文件:https://ip-api.com/docs/api:json