我创建了一个应用程序,并且作为数据收集的一部分,我想在用户使用php访问应用程序和网站时捕获用户的当前位置.
理想情况下,我希望尽可能简化这一点.目前,我有以下脚本,但它有一个默认地址:
$fullurl = "http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true";
echo $json;
$string .= file_get_contents($fullurl); // get json content
$json_a = json_decode($string, true); //json decoder
echo $json_a['results'][0]['geometry']['location']['lat']; // get lat for json
echo $json_a['results'][0]['geometry']['location']['lng']; // get ing for json
Run Code Online (Sandbox Code Playgroud)
我希望用户的当前位置取代1600 Amphitheatre Parkway,Mountain View,CA.
非常感谢任何帮助.
对于node.js项目,我想对mapMyIndia API使用反向地理编码,但找不到任何适当的包.
PS:我不想在我的代码中直接使用API,感谢帮助
我想使用经度和纬度在TextView中获取城市。我越来越IndexOutOfBoundsException。
AndroidGPSTrackingActivity.java
import android.app.Activity;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
import static com.example.khaledsb.location.R.id.lng;
import static java.util.Locale.*;
public class AndroidGPSTrackingActivity extends Activity {
public static float distFrom(float lat1, float lng1, float lat2, float lng2) {
double earthRadius = 6371000; //meters
double dLat = Math.toRadians(lat2-lat1);
double dLng = Math.toRadians(lng2-lng1);
double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
Math.sin(dLng/2) * Math.sin(dLng/2);
double c = …Run Code Online (Sandbox Code Playgroud) android google-maps reverse-geocoding indexoutofboundsexception
我知道LatLng,但我想检索类似于以下链接的库的地址:https://github.com/perliedman/leaflet-control-geocoder,但我不知道如何使用这个库进行react-leaflet 2.1.2.
我正在 json 文件 (geo.json) 中获取地理数据,该文件具有以下结构
{"userId":"Geo-data","data":{"mocked":false,"timestamp":1548173963281,"coords":{"speed":0,"heading":0,"accuracy":20.20400047302246,"longitude":88.4048656,"altitude":0,"latitude":22.5757344}}}
Run Code Online (Sandbox Code Playgroud)
我想要的只是打印与上述数据相对应的地点详细信息,如果可能的话,也将其显示在地图上。我已使用 geopy 尝试了以下代码
from geopy.geocoders import Nominatim
geolocator = Nominatim()
location = geolocator.reverse("22.5757344, 88.4048656")
print(location.address)
print((location.latitude, location.longitude))
Run Code Online (Sandbox Code Playgroud)
但我得到的位置不是很准确。虽然相同的坐标在https://www.latlong.net/Show-Latitude-Longitude.html中给出了良好的结果 ,但我也有一个 Google API 密钥。然而,到目前为止我发现的参考资料几乎就像一个项目本身,对于像我这样的初学者来说有点过分了。geopy 代码很好,但定位精度很差。请帮忙。
PS我也尝试过地理编码器
import geocoder
g = geocoder.google([45.15, -75.14], method='reverse')
print(g.city)
print(g.state)
print(g.state_long)
print(g.country)
print(g.country_long)
Run Code Online (Sandbox Code Playgroud)
然而,它在所有情况下都打印“无”。
我正在使用浏览器中的Google 反向地理编码 API。
在没有限制地使用 API Key 时,API 工作正常。例如:https://maps.googleapis.com/maps/api/geocode/json?key=API_KEY_WITH_NO_RESTRICTION&latlng=41.8857156,-87.64823779999999- 好的
但当我从浏览器调用 API 时,我想限制 API 密钥,最好是来自某些域的请求。
现在,根据限制指南,HTTP Referer 限制不适用于地理编码 API(Google Web 服务 API 之一)。它返回错误“具有引用限制的 API 密钥不能与此 API 一起使用。” 在这种情况下!
另一种选择是使用IP 地址限制。但如果呼叫是从服务器发出的,它似乎更合适。在这种情况下,可以在限制中添加服务器地址。
如果我想继续从浏览器调用地理编码 API,如何保护(限制)API 密钥?
我正在使用Blackberry应用程序,并且想使用OpenStreetMap反向地理编码来获取地址和/或街道拐角。我找到了Nominatim,但在美国似乎没有邮政编码(尽管它有英国邮政编码),是否有OpenStreetMap API来获取邮政编码,或者有其他免费/开放许可的反向地理编码或地址来邮政编码数据/ API
注意:这是针对期末学校的项目(但由于这是一个API /数据源问题,所以我觉得很公平)
注意2:另一个人已经完成了google maps版本,我正在寻找带有Creative Commons类型许可证的东西,请不要提及google maps-注意,我发现至少有一个API声称是开放的,但似乎基于OSM,google和其他数据(即,它无权放弃其数据)。
我目前正在尝试编写一个记录用户访问状态的iOS应用程序.
我面临的问题是我的(void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations方法被一遍又一遍地调用.我不一定认为这是一个问题,除了在那个方法中,我正在调用另一个反向对CLLocation对象进行地理编码并给出状态名称的方法.
我得到的错误是:
Geocode failed with error: Error Domain=kCLErrorDomain Code=2 "The operation couldn’t be completed. (kCLErrorDomain error 2.)"
Run Code Online (Sandbox Code Playgroud)
我知道我在一定的时间限制内达到了反向地理编码的限制,我只是不确定如何限制它.
这是我的代码:
CLLocation *currentLocation;
- (void) getLocation
{
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:currentLocation completionHandler:^(NSArray *placemarks, NSError *error)
{
if (error){
NSLog(@"Geocode failed with error: %@", error);
return;
}
if(placemarks && placemarks.count > 0)
{
CLPlacemark *placemark= [placemarks objectAtIndex:0];
currentState = [NSString stringWithFormat:@"%@",[placemark administrativeArea]];
}
//Checks to see if the state exists in the …Run Code Online (Sandbox Code Playgroud) 如果有人可以帮助我.使用地理编码器免费为Android,目前我只使用谷歌地图.我看到它说它每天只有2500个请求.或者这仅适用于网络和完全不同于移动设备的东西?
我使用以下代码来获取具有纬度和经度的邮政编码.
final Geocoder geocoder = new Geocoder(getActivity());
try {
List<Address> addresses = geocoder.getFromLocation(mLocationClient.getLatitudeCoordinate(), mLocationClient.getLongitudeCordinate(),5);
for (Address address: addresses){
if(address.getLocality()!=null && address.getPostalCode()!=null){
Log.v("Zip code", " " + address.getPostalCode());
}
}
} catch (IOException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
https://developers.google.com/maps/pricing-and-plans/#details
只是想确保.我对此非常困惑,一些澄清可能会有所帮助:)谢谢
google-maps ×4
android ×2
geocoding ×2
geolocation ×2
google-api ×2
javascript ×2
api-key ×1
gps ×1
ios ×1
jquery ×1
leaflet ×1
node.js ×1
npm ×1
npm-request ×1
objective-c ×1
php ×1
python-2.7 ×1
reactjs ×1
web-services ×1