到目前为止,我已经搜索了相当多的运气.
Android Geocoder返回android.location.Address对象.据我所知,这座城市应归还getLocality().在美国境内看起来效果很好,不在外面.
我正在编写一个国际应用程序,并努力寻找解决方案来找出地理位置的城市.
这里捷克共和国/布拉格的输出:
Address[addressLines=
[0:"Psohlavc? 1764/2",
1:"147 00 Prague-Prague 4",
2:"Czech Republic"],
feature=2,
admin=Hlavní m?sto Praha,
sub-admin=Prague,
locality=null,
thoroughfare=Psohlavc?,
postalCode=147 00,
countryCode=CZ,
countryName=Czech Republic,
hasLatitude=true,
latitude=50.0276543,
hasLongitude=true,
longitude=14.4183926,
phone=null,
url=null,
extras=null]
Run Code Online (Sandbox Code Playgroud)
locality是空的,城市在里面sub-admin!地址本身没问题,所以地理编码服务器似乎知道这个城市.
这里有一些随机的欧盟示例,但地点部分起作用:
Address[addressLines=[0:"Nad lesem 440/34",1:"147 00 Prague-Prague 4",2:"Czech Republic"],feature=34,admin=Hlavní m?sto Praha,sub-admin=Prague,locality=null,thoroughfare=Nad lesem,postalCode=147 00,countryCode=CZ,countryName=Czech Republic,hasLatitude=true,latitude=50.02424,hasLongitude=true,longitude=14.4117568,phone=null,url=null,extras=null]
Address[addressLines=[0:"Hauner Straße 4",1:"84431 Heldenstein",2:"Germany"],feature=4,admin=null,sub-admin=null,locality=Heldenstein,thoroughfare=Hauner Straße,postalCode=84431,countryCode=DE,countryName=Germany,hasLatitude=true,latitude=48.2540274,hasLongitude=true,longitude=12.3413535,phone=null,url=null,extras=null]
Address[addressLines=[0:"Igler Straße",1:"6020 Innsbruck",2:"Austria"],feature=Igler Straße,admin=Tyrol,sub-admin=Innsbruck,locality=Innsbruck,thoroughfare=Igler Straße,postalCode=6020,countryCode=AT,countryName=Austria,hasLatitude=true,latitude=47.2465698,hasLongitude=true,longitude=11.4054237,phone=null,url=null,extras=null]
Address[addressLines=[0:"Durnberg 24",1:"5724 Stuhlfelden",2:"Austria"],feature=24,admin=Salzburg,sub-admin=Zell am See District,locality=null,thoroughfare=Durnberg,postalCode=5724,countryCode=AT,countryName=Austria,hasLatitude=true,latitude=47.3233373,hasLongitude=true,longitude=12.4960482,phone=null,url=null,extras=null]
Address[addressLines=[0:"U Rohá?ových kasáren 14",1:"100 00 Prague 10",2:"Czech Republic"],feature=14,admin=Hlavní m?sto Praha,sub-admin=Prague,locality=Prague …Run Code Online (Sandbox Code Playgroud) 我使用谷歌的地理编码API来处理自由形式的地址数据,我试图使结果(感subpremise,administrative_area_level_2等等).此时我只对美国的地址感兴趣,并希望将结果格式化为街道地址,城市和州代码.状态代码似乎很简单(administrative_area_level_1),但其他代码更模糊.是城市locality还是sublocality两者甚至更多?街道地址本身似乎可以是其他字段的任意数量的组合.
理想情况下,我只想取消formatted_address,删除城市,州,邮政编码和国家/地区代码,并保留留下的"街道地址".是否有处理所有这些字段的指导或建议,至少在大多数情况下(常规地址,带有单元号的地址等)?
我将自动完成范围缩小到一个区域和仅覆盖澳大利亚的范围,但我仍然接受智利和中国以及所选区域以外的其他国家的自动完成.有没有人有一个很好的解决方案来解决这个问题?我也无法改变谷歌自动完成的样式,它是一个自我生成的Div与样式标签,克服了我的风格自动完成DIV?我开始使用Geocoder和Jquery自动完成来过滤结果,但它不能像谷歌自动完成一样好,结果不如谷歌地图自动完成?
我这样称为图书馆:
以下是创建自动完成的代码:
var defaultBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(-47.5765257137462, 106.259765625),
new google.maps.LatLng(-9.6, 179.359375));
var options = {
bounds: defaultBounds,
types: ['geocode'],
offset: 5
};
var input = document.getElementById('store-locator-header');
var autocomplete = new google.maps.places.Autocomplete(input,options);
Run Code Online (Sandbox Code Playgroud) 我正在为我的位置服务应用程序使用Google地图和Google地理编码服务.我使用Google地理编码服务将地址转换为lat/lng位置.我的问题是如何为某个地址自动查找适当的缩放,例如maps.google.com.
例如,当我在maps.google.com(例如Cisitu Baru, Bandung)中搜索街道时,它将以较小的缩放显示街道.当我搜索某个区域(例如Bandung)时,它将显示更大的缩放.省的缩放比例(例如Jawa Barat/ West Java),等等.
我试过了两个
var geocoder = new google.maps.Geocoder();
geocoder.geocode( {
'address': someAddress
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
console.dir(results);
//cut
map.panToBounds(results[0].geometry.bounds); //setting bound
//cut
}
});
Run Code Online (Sandbox Code Playgroud)
和
//cut
map.panToBounds(results[0].geometry.viewports); //setting bound
//cut
Run Code Online (Sandbox Code Playgroud)
(老实说,我仍然不知道什么之间的区别bounds,并viewport和他们有什么用途从code.google.com/apis/maps/documentation/javascript/geocoding.html)
但两者仍然没有以适当的缩放显示地图.
现在,我使用这样的小黑客
var tabZoom = {
street_address: 15,
route: 15,
sublocality: 14,
locality: 13,
country: 10
};
//cut
map.setCenter(results[0].geometry.location);
if (tabZoom[results[0].types[0]] != undefined){
map.setZoom(tabZoom[results[0].types[0]]);
} else {
map.zetZoom(10); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Geocoder API位于以下位置的for java:http://code.google.com/p/geocoder-java/
这些是我编写的代码行,当我将其作为GAE Web应用程序运行时,它可以很好地工作.
final Geocoder geocoder = new Geocoder();
GeocoderRequest geocoderRequest = new GeocoderRequestBuilder().setAddress(req.getParameter("location").toString()).setLanguage("en").getGeocoderRequest();
GeocodeResponse geocoderResponse = geocoder.geocode(geocoderRequest);
List<GeocoderResult> someList = geocoderResponse.getResults();
GeocoderResult data = someList.get(0);
GeocoderGeometry data_2 = data.getGeometry();
BigDecimal Latitude = data_2.getLocation().getLat();
BigDecimal Longitude = data_2.getLocation().getLng();
Run Code Online (Sandbox Code Playgroud)
它的作用是我提供一个文本,例如纽约,它找出该区域的经度和纬度.
但是,当我将相同的代码行放入GAE时,有时当我运行此代码时,我会在" GeocoderResult data = someList.get(0)" 处获得检查边界异常;
有时我没有得到错误,它正确显示网页上的坐标.所以我有点困惑,在网站上,它表明它支持GAE,或者geocoder谷歌提供的东西有什么问题本身有一些问题吗?
通常它在东部时间的下午或午夜不起作用.
我试图根据我在下拉字段中选择的内容动态更改区域。
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?region=DK"></script>
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题吗?
在过去的两天里,当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密钥: …
在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
请记住,地址可能有不同的格式.
提前致谢!
我一直在使用 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-geocoder ×10
android ×4
google-maps ×3
java ×2
autocomplete ×1
field ×1
geocoding ×1
javascript ×1
list ×1
nested-lists ×1
parsing ×1
r ×1