在过去的两天里,当IllegalArgumentException我试图从地址中获取坐标时,我在Android代码中收到错误,甚至反转,从经度和纬度获取地址时,我会忘记这一点.这是代码,但我看不到错误.它是一个标准的代码段,可以在Google搜索中轻松找到.
public GeoPoint determineLatLngFromAddress(Context appContext, String strAddress) {
Geocoder geocoder = new Geocoder(appContext, Locale.getDefault());
GeoPoint g = null;
try {
System.out.println("str addres: " + strAddress);
List<Address> addresses = geocoder.getFromLocationName(strAddress, 5);
if (addresses.size() > 0) {
g = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6)
);
}
} catch (Exception e) {
throw new IllegalArgumentException("locationName == null");
}
return g;
}
Run Code Online (Sandbox Code Playgroud)
这些是manifest.xml文件的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
Run Code Online (Sandbox Code Playgroud)
我也确实声明了Google API密钥: …
我知道此问题经常被问过,但我无法从任何答案或搜索结果中获得解决方案.我必须尽快解决这个问题..我试图从用户输入的地址获得纬度和经度,但我继续得到:
java.io.IOException: Unable to parse response from server
Run Code Online (Sandbox Code Playgroud)
我正在使用此代码:
Geocoder geocoder = new Geocoder(this ,Locale.getDefault());
String newAddress = (String)saveas.getText().toString();
List<Address> addresses = geocoder.getFromLocationName(newAddress, 1);
Run Code Online (Sandbox Code Playgroud)
我尝试了很多不同的方法,但没有任何作用...默认的地图应用程序运行良好,当用户输入地址时,它成功地显示地图中的地址..我怎么能这样做..?
我添加了所有必需的权限,我在真实设备上测试它(版本2.3)...
谁能告诉我Android Geocoder 和Android Google Geocoder API之间的确切区别
据我所知,Android Geocoder 是平台内置类,与 API 相比,结果较少,可靠性也较低。
内置地理编码器类是否有任何硬性限制/配额?
在iOS中有一个名为的类NSDataDetector,例如,让你传递一个文本,它将检测该文本是否包含邮政地址,日期,链接......
就我而言,我有兴趣为Android找到一个类似的工具,它可以检测文本中的地址.我一直在玩Geocoder,但它只有在你已经知道地址的情况下才有效.否则,它不会达到目的.
我正在寻找的一个例子可能是:
鉴于:
This is just a sample text that contains a nice address: 123 W Main St, Imaginary City, IC, 12345
该工具只会返回123 W Main St, Imaginary City, IC, 12345
请记住,地址可能有不同的格式.
提前致谢!
我一直注意到谷歌地理编码api在某些时候会回复某些城市的"未知错误".
现在的例子:
curl 'https://maps.googleapis.com/maps/api/geocode/json?address=Kansas%20City,%20KS,%20USA'
收益:
{
"results" : [],
"status" : "UNKNOWN_ERROR"
}
也:
curl 'https://maps.googleapis.com/maps/api/geocode/json?address=Oklahoma%20City,%20OK'
收益:
{
"results" : [],
"status" : "UNKNOWN_ERROR"
}
而
curl 'https://maps.googleapis.com/maps/api/geocode/json?address=New%20York%20%City,%20NY'
正常工作.
前几天我也遇到了这个问题,但似乎已经解决了,现在又回来了.
我必须在 R 中对几个地址进行地理编码,但收到“已达到超时:连接在 10000 毫秒后超时”错误。我在办公室防火墙后面,所以也尝试使用代理,但仍然遇到相同的错误。
当我使用源作为“dsk”但它不会对大多数地址进行地理编码时,这有效,因此想要使用“google”作为源。
下面是我使用的一段代码。
library(ggmap)
library(curl)
register_google(key = "Have_Entered_My_API_Key_Here")
#Used below code to use proxy...(saw it as a solution in stackoverflow only for working behind firewall..maybe I'm not doing it the correct way?)
library(httr)
set_config(use_proxy(url="10.3.100.207",port=8080))
origAddress <- read.csv("Data_for_Geocoding.csv",header = TRUE,sep = ",",stringsAsFactors = FALSE)
for(i in 1:nrow(origAddress))
{
result <- geocode(origAddress$Add_to_GeoCode[i], output = "latlona", source = "google",sensor = TRUE)
origAddress$LONGITUDE[i] <- as.numeric(result[1])
origAddress$LATITUDE[i] <- as.numeric(result[2])
# origAddress$ <- as.character(result[3])
}
Run Code Online (Sandbox Code Playgroud)
运行此代码时出现以下错误。
“在 curl::curl_fetch_memory(url, handle = handle) 中出错:达到超时:连接在 …
geocoding r reverse-geocoding google-geocoder google-geocoding-api
我一直在使用 Google 的地理编码 API 对地址列表进行地理编码。它在嵌套列表中返回结果。列表中的元素可能会有所不同,有时会出现部分匹配,从而导致嵌套在最高级别的多个嵌套列表。到目前为止,我已将每个 GoogleResult 保存到单个数据框单元格中。
这是我的数据框的示例:
df <- structure(list(address = structure(c(3L, 1L, 2L), .Label = c("115 Civic Parade, Altona VIC 3018",
"Civic Parade, Altona VIC 3018", "EAST LA CLARKEFIELD 3430"), class = "factor"),
GoogleResult = list(list(list(access_points = list(), address_components = list(
list(long_name = "Los Angeles", short_name = "Los Angeles",
types = list("locality", "political")), list(long_name = "Los Angeles County",
short_name = "Los Angeles County", types = list("administrative_area_level_2",
"political")), list(long_name = "California",
short_name = "CA", types = list("administrative_area_level_1",
"political")), list(long_name …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Google地理编码器API V3根据用户指定的地址在地图上绘制位置,代码如下.
当我直接提出请求时(例如http://maps.googleapis.com/maps/api/geocode/json?address=peterborough&sensor=false),我得到了预期的回复.但是,当我使用下面的代码发出相同的请求时,在getLatLong函数退出后,中间点变量始终是未定义的.
我做错了什么?
function loadFromSearch(address)
{
midpoint = getLatLong(address);
mapCentre = midpoint;
map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
...
}
function getLatLong(address)
{
var result;
var url = 'http://maps.googleapis.com/maps/api/geocode/json?address=' + encodeURIComponent(address) + '&sensor=false'
$.getJSON(url,
function (data){
if (data.status == "OK")
{
result = data.results[0].geometry.location;
}
});
return result;
}
Run Code Online (Sandbox Code Playgroud)
================================================== ================================
鉴于回复,我现在已将代码更新为以下内容.我仍然没有得到任何结果,在Firebug中设置断点结果= data.results [0] .geometry.location; 永远不会受到打击
function loadFromSearch(address)
{
midpoint = getLatLong(address, loadWithMidpoint);
}
function getLatLong(address, callback)
{
var result;
var url = 'http://maps.googleapis.com/maps/api/geocode/json?address=' + encodeURIComponent(address) + …Run Code Online (Sandbox Code Playgroud) 有时我会Service Not Available在我的申请中遇到例外情况.大多数时候,没有问题.但有时它会发生.(该应用程序仍在开发中)
解决问题的唯一方法是重启手机.关于支持论坛的相关问题38009.但我从评论中理解的是,重启设备可以永远解决问题.
它是否正确?
因为在我的情况下,错误可以返回(频率:我认为每月一次或两次,我在这个应用程序上是全职).
有没有办法从应用程序内部重新启动地理编码器?
我唯一的解决方案是提供一个替代解决方案,以防万一"手动"获取地址,如下所示.你有更好的吗?
Dbg.d(TAG, "=== address_info FetchLocationTask - doInBackground");
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
mHandler = new Handler();
Looper.loop();
}
}).start();
/**
* Implementation of a second method in case of failure:
*
*/
double lat = Double.parseDouble(args[0]);
double lng = Double.parseDouble(args[1]);
String address = String.format(Locale.ENGLISH,
"http://maps.googleapis.com/maps/api/geocode/json?latlng="+Double.toString(lat)+","+Double.toString(lng)+"&sensor=true&language="+Locale.getDefault().getCountry(), lat, lng);
Dbg.d(TAG, "fetching path : "+ address);
HttpGet httpGet = new HttpGet(address); …Run Code Online (Sandbox Code Playgroud) android reverse-geocoding google-geocoder service-not-available
我正在尝试将 Google Geocode Autocomplete 字段添加到我的表单中。
我已经能够让它限制返回到国家 (AU) 的结果,但如果我也能将结果限制到州,那就更好了。(新南威尔士州/新南威尔士州)
这是我目前的initialize()功能:
function initialize() {
var options = {
types: ['geocode'],
componentRestrictions: {country:"AU"}
};
autocomplete = new google.maps.places.Autocomplete(
(document.getElementById('autocomplete')),options);
google.maps.event.addListener(autocomplete, 'place_changed', function() {
fillInAddress();
});
}
Run Code Online (Sandbox Code Playgroud)
我已阅读文档并发现您可以使用types参数来限制结果,但我一直无法弄清楚确切的代码应该是什么。
只需将其更改为:
types: ['administrative_area1':'NSW'], // OR 'New South Wales'
Run Code Online (Sandbox Code Playgroud)
并且与上述类似的各种组合(= 而不是:等)都不起作用..
有人能指出我想要实现的实际语法的正确方向吗?
谢谢。
jquery google-maps autocomplete google-maps-api-3 google-geocoder
google-geocoder ×10
android ×5
google-maps ×5
geocoding ×3
jquery ×2
r ×2
autocomplete ×1
java ×1
javascript ×1
list ×1
nested-lists ×1