我想通过HTTP功能使用谷歌地理编码将城市名称转换为我的AJAX Web应用程序的经度和纬度.
但是,似乎HTTP地理编码器功能不存在回调函数
http://code.google.com/apis/maps/documentation/geocoding/index.html
是真的,没有回调函数吗?
因为如果这是真的,它实质上意味着当与AJAX一起使用时,通过HTTP api的Google地理编码是无用的,因为JavaScript会引发跨域异常错误.
关于如何在JavaScript中的AJAX Web应用程序中通过HTTP api使用地理编码的任何想法?
注:我不希望使用完全成熟的谷歌地图API,它是大约200KB的下载(即的GClientGeocoder).我想使用它的超快速响应的HTTP api b/c,并且不需要我的网络用户必须下载巨大的全面交互式谷歌地图api.
例如 http://maps.google.com/maps/geo?output=json&sensor=false&key= {API_KEY}&q = {CITY,STATE}&CALLBACK = ????
谢谢
下面的代码适用于在1.5,1.6和2.0上运行的实际设备以及在2.1上运行的仿真器.
但是,在Nexus One(运行2.1)上执行它会引发IOException:
java.io.IOException: Unable to parse response from server
at android.location.Geocoder.getFromLocation(Geocoder.java:124)
Run Code Online (Sandbox Code Playgroud)
这是它发生的代码片段:
Double myLatitude = AppObject.myLocation.getLatitude();
Double myLongitude = AppObject.myLocation.getLongitude();
DEBUG.i(TAG, "My location: " + myLatitude + " | " + myLongitude);
Geocoder geocoder = new Geocoder(MainActivity.this);
java.util.List<Address> addressList;
try {
addressList = geocoder.getFromLocation(myLatitude, myLongitude, 5);
if(addressList!=null && addressList.size()>0) {
currentAddress = new String();
DEBUG.i(TAG,addressList.get(0).toString());
currentAddress = addressList.get(0).getAddressLine(0) + ", "
+ addressList.get(0).getAddressLine(1) + ", "
+ addressList.get(0).getAddressLine(2);
}
return true;
} catch (IOException e) {
e.printStackTrace();
return false; …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个小型应用程序,它将城市和州以及地理位置解析为纬度/经度.现在我正在使用Google Map的API,ColdFusion和SQL Server.基本上,城市和州的字段都在数据库表格中,我想要获取这些位置并将标记放在谷歌地图上,以显示它们的位置.
这是我执行地理编码的代码,查看页面源代码显示它正确循环查询并在地址字段中放置位置("奥马哈,NE"),但没有标记或地图,正在页面上显示:
function codeAddress() {
<cfloop query="GetLocations">
var address = document.getElementById(<cfoutput>#Trim(hometown)#,#Trim(state)#</cfoutput>).value;
if (geocoder) {
geocoder.geocode( {<cfoutput>#Trim(hometown)#,#Trim(state)#</cfoutput>: address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: <cfoutput>#Trim(hometown)#,#Trim(state)#</cfoutput>
});
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
</cfloop> }
Run Code Online (Sandbox Code Playgroud)
以下是初始化地图的代码:
var geocoder;
var map;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(42.4167,-90.4290);
var myOptions = {
zoom: …Run Code Online (Sandbox Code Playgroud) Google地理编码API有严重的限制(每天2,500个请求),我们总是会遇到限制错误.他们的营业执照花费10,000美元,对我们来说太贵了.
服务应与不同语言和不同国家合作.
服务应验证地址并返回lat/lng.地址可以是具有不同格式的字符串.
我们已准备好为此类服务付费,最好使用RESTful API.
如果GeoShape页面包含示例或单个属性被分解而不仅仅是Text,那将是很好的.
我对圆圈属性特别感兴趣.我想从诺丁汉市中心(52.953,-1.149)定义一个20英里(约32公里)半径的圆圈.
<!DOCTYPE html>
<html>
<head>
<title>Nottingham City Neighbourhood</title>
</head>
<body>
<div itemscope itemtype="http://schema.org/Place">
<div itemprop="geo" itemscope itemtype="http://schema.org/GeoShape">
<meta itemprop="circle" content="52.953 -1.149 32186.88"/>
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
丰富的代码段工具确实会选择数据,但我不相信我使用了正确的格式.特别是因为解析的经度是积极的.
> The following structured data is viewable only in the XML results view
> in Custom Search. More information.
>
> geoshape (source = MICRODATA) circle = 52.953 -1.149 32186.88
>
>
> The following structured data can be used to filter search results in
> Custom Search. More information. …Run Code Online (Sandbox Code Playgroud) 我试图绘制一些信息,显示完整的人口,然后在地图上按位置绘制该人口的子集.我已经看到使用同心圆或三维倒锥形的数据可视化来表达这一点.我只是无法弄清楚如何在ggplot/中ggmap
这是一个免费的手版本Paint,显示了我正在做的事情的粗略概念:

这是一个例子的粗略数据:
> dput(df1)
structure(list(zip = c("00210", "00653", "00952", "02571", "04211",
"05286", "06478", "07839", "10090", "11559"), city = c("Portsmouth",
"Guanica", "Sabana Seca", "Wareham", "Auburn", "Craftsbury",
"Oxford", "Greendell", "New York", "Lawrence"), state = c("NH",
"PR", "PR", "MA", "ME", "VT", "CT", "NJ", "NY", "NY"), latitude = c(43.005895,
17.992112, 18.429218, 41.751554, 44.197009, 44.627698, 41.428163,
41.12831, 40.780751, 40.61579), longitude = c(-71.013202, -66.90097,
-66.18014, -70.71059, -70.239485, -72.434398, -73.12729, -74.678956,
-73.977182, -73.73126), timezone = c(-5L, -4L, -4L, -5L, -5L,
-5L, …Run Code Online (Sandbox Code Playgroud) 我刚接触谷歌地图api并完成了地理编码示例:
https://developers.google.com/maps/documentation/javascript/examples/geocoding-simple
我希望能够在我的代码中对字符串进行地理编码,并在该位置放置标记,而不是用户搜索位置.到目前为止我的代码是:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Geocoding service</title>
<style>
html, body, #map-canvas
{
height: 100%;
margin: 0px;
padding: 0px
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
//global variables
var geocoder;
var map;
var Ireland = "Dublin";
function initialize()
{
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(53.3496, -6.3263);
var mapOptions =
{
zoom: 8,
center: latlng
}
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
codeAddress();//call the function
}
function codeAddress()
{
var address = document.getElementById("Ireland").value;
geocoder.geocode( …Run Code Online (Sandbox Code Playgroud) 我有很多例子,谷歌地图返回确切的位置,而地理编码找不到完全匹配,只提供一个匹配纬度/经度,这对我的目的没有好处.
例如:谷歌地图中的"1729国道8,奥本,IN 46706"将我完全放在沃尔玛配送中心上.
使用地理编码.....通过 http://gmaps-samples.googlecode.com/svn/trunk/geocoder/singlegeocode.html
或手动
距离几英里远的地方......
我不明白为什么差异,因为我将使用地理编码等表达MAP,并且许多例子在两者之间不匹配.我需要通过MAPS进行地理编码!
google-maps geocoding google-maps-api-3 google-geocoding-api
我在Swift 3中理解Apple的MapKit时遇到了一些麻烦.
我在这里找到了一个例子:如何用swift中的坐标以编程方式打开地图App?
public func openMapForPlace(lat:Double = 0, long:Double = 0, placeName:String = "") {
let latitude: CLLocationDegrees = lat
let longitude: CLLocationDegrees = long
let regionDistance:CLLocationDistance = 100
let coordinates = CLLocationCoordinate2DMake(latitude, longitude)
let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, regionDistance, regionDistance)
let options = [
MKLaunchOptionsMapCenterKey: NSValue(mkCoordinate: regionSpan.center),
MKLaunchOptionsMapSpanKey: NSValue(mkCoordinateSpan: regionSpan.span)
]
let placemark = MKPlacemark(coordinate: coordinates, addressDictionary: nil)
let mapItem = MKMapItem(placemark: placemark)
mapItem.name = placeName
mapItem.openInMaps(launchOptions: options)
}
Run Code Online (Sandbox Code Playgroud)
这绝对是游泳,除了在这种情况下我需要使用地址而不是坐标.
我已经找到了使用谷歌地图做到这一点的方法,但我似乎无法找到Apple地图的具体答案,如果它存在,我已经完成了它的上釉.
如果有人能帮助我理解正确的方法是什么,那将是惊人的.我正在使用:
我发现MKLocalSearchCompleter只有可用iOS 9.3+,不幸的是我的应用程序需要支持9.0+.我想在Swift 4.0.Whats的替代方案中为位置搜索制作一个自动完整的建议MKLocalSearchCompleter?
有没有其他更好的方法来自动建议位置?
尝试了什么:
我已经使用CLGeocoder, geocodeAddressString()但不能用于自动完成建议搜索,因为搜索字符串中的更改是频繁的,因此API不允许api调用.我错过了什么?
geocoding ×10
google-maps ×3
javascript ×3
geolocation ×2
ios ×2
swift ×2
ajax ×1
android ×1
callback ×1
coldfusion ×1
ggmap ×1
ggplot2 ×1
ioexception ×1
mapkit ×1
nexus-one ×1
r ×1
schema.org ×1
semantic-web ×1
sql-server ×1