我们在rails webservice中使用反向地理编码,并且在通过geokit使用Google反向地理编码器时遇到配额问题.我们还在实施简单地理服务,我希望能够跟踪我们每分钟/小时的请求数量.
有关跟踪我们的反向地理编码调用的任何建议吗?
我们的代码将如下所示.你会做这些吗?
注意:我不需要实时数据,只是希望能够在一小时内知道每小时的常规和最大请求数.(以及每月总申请)
def use_simplegeo(lat, lng)
SimpleGeo::Client.set_credentials(SIMPLE_GEO_OAUTHTOKEN, SIMPLE_GEO_OAUTHSECRET)
# maybe do logging/tracking here?
nearby_address = SimpleGeo::Client.get_nearby_address(lat, lng)
located_location = LocatedLocation.new
located_location.city = nearby_address[:place_name]
located_location.county = nearby_address[:county_name]
located_location.state = nearby_address[:state_code]
located_location.country = nearby_address[:country]
return located_location
end
Run Code Online (Sandbox Code Playgroud)
谢谢!
我在我的城市有一个区域名称列表,我需要Lat和Long相同的名称.
有什么服务可以使用获取数据吗?
我不想使用任何地图.我想做简单的api调用,并通过json或xml获取lat long.
i am developing android application using Geocoder services,
I have an application where I try to get address of a location based on
the latitude,longitude coordinates its working fine.
my problem is how to get continent of particular address.
Run Code Online (Sandbox Code Playgroud)
例如:double lat = 17; double lon = 78.49;
List addresses = new Geocoder(Shout.this,Locale.getDefault()).getFromLocation(lat,lon,1);
我使用此代码输出的是印度,海德拉巴这个地址相关如何查找大陆,请帮我一些有价值的解决方案.
我正在使用地理编码器动态获取国家名称是他们有机会获得大陆名称以及country.it很难静态维护我需要动态任何免费服务找到基于大陆的服务
提前致谢
问题:
我正在尝试使用Google Maps API V3将lat/long地理编码到最近的街道交叉口.此外,目前,这不一定非常准确 - 因为我只是试图匿名地址而不是提供方向.
我已经看到地理编码结果数据包含地址组件类型 "交叉点",但这在返回结果中似乎并不一致 - 并且通常不是空白.
我还做了一些关于SO的最佳方法,以便直接从Google获取它,并且我最接近的是:如何通过Google Maps API找到最近的交叉点?,这并没有真正解决我的问题.鉴于此,我提出了自己的解决方案,并希望完全有一些意见,优化,建设性批评或其他选择.
我的暂定解决方案:
在使用API之后,我决定给出以下算法(仅用于上下文,这是在控制台应用程序中用C#编写的):
我拿一个地址并将其解析为lat/long.
然后我在坐标中添加或减去一定数量的纬度或长度 - 按照城市街区的顺序(根据纬度调整的距离)并获得点之间的行走方向.我这样做是为了所有四个方向 - 所以第一个修改是保持纬度相同但减去一些经度.然后下一个修改是保持纬度并增加一些经度等.
获得指示后,我解析结果并检查开始和结束地址.如果它们不同,我会将街道名称拉出来并将它们视为一个"交叉点"(尽管有时这会产生平行的街道 - 再次只是试图得到一个球场).
如果我找不到两条不同的街道,我会扩大最终目的地的距离并重复此过程.
到目前为止,这种方法运行良好,但显然它在时间和使用我分配的查询限制方面都是一个昂贵的过程.此外,我检查了API服务条款,只要我在其中包含免责声明并在Google地图上显示结果,我认为我没问题.
我对社区的问题是:
如何提高算法的效率?具体来说,我调用API的次数(实现代码不是问题)
还有另外一种方法可以使用Google Maps API完成此操作吗?在上面提到的SO问题中,解决方案是循环建筑数量.我不确定究竟是什么意思 - 所以任何澄清都会很棒.
如上所述,我不相信这违反了服务条款 - 但我错了吗?
是否有其他基于Web的API可以更好地满足我的需求?也许Bing,或其他一些提供商?
非常感谢您的帮助.
更新: 我已经遇到了当天的查询限制,因此我今天无法测试任何针对Google的建议,但我仍然愿意使用不同的API.谢谢.
我有一个简单的问题.
MKReverseCoder已弃用,自iOS 5起无效.我们必须使用CLGeocoder.但是,iOS4下有很多人.新应用如何与iOS4和iOS5配合使用进行地理编码?
谢谢!
我知道此问题经常被问过,但我无法从任何答案或搜索结果中获得解决方案.我必须尽快解决这个问题..我试图从用户输入的地址获得纬度和经度,但我继续得到:
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)...
我见过各种语言的许多所谓的"反向地理编码"库; 所有这些都依赖于通过REST或类似方法调用外部提供程序.但是,如果每秒必须处理数千个请求,则无法调用REST提供程序.
另一方面,问题应该很容易解决 - 基于CSV的数据库可以免费获得这些信息.问题是编写高效且经过良好测试的内存中搜索实现的时间和成本,而不是下载或购买现有的搜索实现.
经过很多寻找后我找不到任何东西,但我无法相信不可能有一个.是否有预先编写的库可以执行此操作?
这个问题:
是最接近的,但基本上表明如何编写解决方案,而不是现成的任何东西.但每个人都必须使用一些库.每天十几个人一定有这个问题.
我知道网站上有很多关于以下内容的问题IOExeption:服务不可用.....我已经检查了我能找到的关于这个主题的所有答案...我正在运行它async task似乎工作得很好但仍然得到相同的例外.
我已经使用isPresent()过以前的尝试,虽然它不在以下代码中,我使用相同的手机.我有互联网许可.我试图改变目标,google api看看是不是问题,但没有区别.
这是第四年项目的重要组成部分,因此任何帮助都是严肃的.在最近之前,ps从未使用过java或android,所以请原谅任何看起来编码的菜鸟.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
view1 = (TextView) findViewById(R.id.textView1);
view2 = (TextView)findViewById(R.id.textView2);
view3 = (TextView)findViewById(R.id.textView4);
b1 = (Button) findViewById(R.id.button1);
locationManager =
(LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
//provider =
// locationManager.getProvider(LocationManager.GPS_PROVIDER);
final LocationListener listener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
view2.setText(Double.toString(location.getLatitude()));
view3.setText(Double.toString(location.getLongitude()));
Double lat = Double.valueOf(location.getLatitude());
Double longTemp = Double.valueOf(location.getLatitude());
new geo().execute(lat,longTemp);
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub …Run Code Online (Sandbox Code Playgroud) http://maps.googleapis.com/maps/api/geocode/xml?latlng=23.0043673,72.5411868999996&sensor=false
此链接为我提供以下结果此XML文件似乎没有任何与之关联的样式信息.文档树如下所示.
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<GeocodeResponse>
<status>OK</status>
<result>
<type>route</type>
<formatted_address>
Dharnidhar Road, Vasna, Ahmedabad, Gujarat 380007, India
</formatted_address>
<address_component>
<long_name>Dharnidhar Road</long_name>
<short_name>Dharnidhar Road</short_name>
<type>route</type>
</address_component>
<address_component>
<long_name>Vasna</long_name>
<short_name>Vasna</short_name>
<type>sublocality</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Ahmedabad</long_name>
<short_name>Ahmedabad</short_name>
<type>locality</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Ahmedabad</long_name>
<short_name>Ahmedabad</short_name>
<type>administrative_area_level_2</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Gujarat</long_name>
<short_name>GJ</short_name>
<type>administrative_area_level_1</type>
<type>political</type>
</address_component>
<address_component>
<long_name>India</long_name>
<short_name>IN</short_name>
<type>country</type>
<type>political</type>
</address_component>
<address_component>
<long_name>380007</long_name>
<short_name>380007</short_name>
<type>postal_code</type>
</address_component>
<geometry>
<location>
<lat>23.0043870</lat> …Run Code Online (Sandbox Code Playgroud) 这似乎是一个非常简单和愚蠢的问题,但我找不到方便的答案.
我正在尝试使用谷歌的反向geocodding api与django,因为该网站解释(在https://developers.google.com/maps/documentation/geocoding/start?csw=1#ReverseGeocoding)我应该向网址发送请求:
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=<_api_key>
但我找不到合适的方式使用django发送此请求谷歌api .
对我来说,内置django的方法看起来很简单,但我能找到的只是要安装的模块.
如果没有办法安装其他python模块哪一个最好?