这段代码一直有效,直到我昨晚更新.
代码在我的localhost上完美运行,但是我的测试服务器上出现错误.错误消息(来自Firebug)是"map.set_center is not a function".
那为什么这不再适用于我的服务器呢?
function googleMapInit()
{
if (jQuery('#map_canvas').length > 0) {
var currentLocation = jQuery('#geomap_ddlCity :selected').text() + ', ' + jQuery('#geomap_ddlCountry :selected').text();
var options = {zoom: 14, mapTypeId: google.maps.MapTypeId.ROADMAP }
var map = new google.maps.Map(document.getElementById("map_canvas"), options);
var geocoder = new google.maps.Geocoder();
//Center map for current selected city
geocoder.geocode(
{
address: currentLocation}, function(results, status)
{
if (status == google.maps.GeocoderStatus.OK && results.length) {
alert(results[0].geometry.location);
map.set_center(results[0].geometry.location);
} else
{
var oslo = new google.maps.LatLng(59.9167, 10.75);
map.set_center(oslo);
} …Run Code Online (Sandbox Code Playgroud) 根据Geocoder 文档,该类向后端服务提供方法,该服务可能存在也可能不存在于设备上。如果设备上不存在地理编码器,理论上地理编码请求将不会返回任何结果。但是,如何区分由于没有后端地理编码器服务而没有结果与由于位置没有意义而没有结果?
我的应用程序已经需要 Google Maps API,所以这可能是一个有争议的问题;作为次要问题,Google Maps API 是否总是包含地理编码器?
我正在做一些初步的研究,我对这个问题知之甚少.我需要创建一个可以获取地址的解决方案,然后确定该地址是否在某些预定义的边界内(可能是一系列连接的街道).有人建议从哪里开始?
据我所知,谷歌每天要求2,500个请求...但是EARTH没有办法让我今天提出这么多请求,而且我只是继续获得'OVER_QUERY_LIMIT'
$street_no = get_post_meta($prop->ID, 'street_no', true);
$street = get_post_meta($prop->ID, 'street', true);
$street_suffix = get_post_meta($prop->ID, 'street_suffix', true);
$addr = urlencode( $street_no." ".$street." ".$street_suffix." BC Canada" );
$url = 'http://maps.googleapis.com/maps/api/geocode/json?address='.$addr.'&sensor=true';
$json_result = json_decode(file_get_contents($url));
if ( $json_result->status === "OVER_QUERY_LIMIT" ) :
sleep(2);
$json_result = json_decode(file_get_contents($url));
endif;
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,如果我得到状态OVER_QUERY_LIMIT我告诉脚本睡2秒然后继续...这似乎在今天早上的某个时候工作,但现在我甚至不能得到一个地址编码.
我在这一点上不知道该做什么......这使我的应用程序完全没用.
我编写了一个应用程序,它使用 Bing Maps REST API 解析 CSV 文件、提取地址并对其进行地理编码。我遇到的问题是,如果我多次运行同一个文件,我会得到不同的结果。在第一次试验中,第 2 行和第 6 行可能不返回匹配项。在接下来的试验中,第 2 行和第 6 行将返回匹配项,而第 4 行可能不会。我使用 Fiddler 检查了 HTTP 流量。我的请求格式正确,每个响应都返回 HTTP 状态代码 200 和有效的 JSON,只有一些地址会产生结果,而有些则不会,并且特定地址的成功或失败会随着试验而变化。任何人都可以提供任何见解吗?
更新
样品请求:
GET http://dev.virtualearth.net/REST/v1/Locations?o=json&adminDistrict=MI&locality=Shelby&postalCode=49455-1299&addressLine=72+South+State+Street&key={MyApiKey} HTTP/1.1
Host: dev.virtualearth.net
Run Code Online (Sandbox Code Playgroud)
示例响应:
HTTP/1.1 200 OK
Cache-Control: no-cache
Transfer-Encoding: chunked
Content-Type: application/json
Server: Microsoft-IIS/8.0
X-BM-TraceID: 9b6cfaa0abdb47b7b7e2790900bcddce
X-BM-Srv: BL2M001304, BL2MSNVM001275, BL2MSNVM001299
X-MS-BM-WS-INFO: 0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 22 Feb 2013 15:14:30 GMT
247
{
"authenticationResultCode":"ValidCredentials",
"brandLogoUri":"http:\/\/dev.virtualearth.net\/Branding\/logo_powered_by.png",
"copyright":"Copyright © 2013 Microsoft and its suppliers. All rights reserved. This …Run Code Online (Sandbox Code Playgroud) 如果没有阅读整个问题,请不要标记为重复
有没有办法在iOS中的两点之间获得驱动路线的长度CLLocation,而不显示地图?
不像乌鸦飞!但就像在MK驾驶模式中一样
我不能使用谷歌,因为我必须在谷歌地图上显示结果.
我找到了这段代码,但这仅在显示iOS-Map时有效:
-(void)showMapRouteFromCurrentLocation
{
CLLocationCoordinate2D currentUserCoordinate = YourCoordinate;
//currentUserCoordinate.latitude= +53.509980;
//currentUserCoordinate.longitude = -0.133700;
MKPlacemark *place = [[MKPlacemark alloc]
initWithCoordinate:currentUserCoordinate
addressDictionary:nil];
MKMapItem *mapItem = [[MKMapItem alloc]initWithPlacemark:place];
NSDictionary *routeOption = [[NSDictionary alloc] initWithObjectsAndKeys:MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsDirectionsModeKey, nil];
[mapItem openInMapsWithLaunchOptions:routeOption];
}
Run Code Online (Sandbox Code Playgroud)
但这不是我需要的.
我已经阅读了你的答案. 用于地理编码的Maps API密钥不再有效?
目前我正在尝试这样做:https: //maps.google.com/maps/api/geocode/json?address = n&_nsor = true&key = apikeygoeshere
给我错误:
此API项目无权使用此API.
请建议我如何完成我的应用程序.我正在为我的App搜索位置.我可以稍后购买商业计划但是现在我需要测试开发.我有以下服务:Google Maps Coordinate API,Google Maps Engine API,Google Maps Geolocation API,Google Maps JavaScript API v3,适用于iOS的Google Maps SDK,Places API.
使用 Geocode API 时,原始地址中的任何嵌入式公寓或套房编号似乎都在 XML 响应中被删除。这使得无法使用返回的地址作为“更正”或“标准化”格式进行保存。
有没有办法保存地址信息?
其次,在这种情况下,“apt B”代表与“A、C、D、E等”不同的建筑物。因此不同的屋顶地理编码。
任何帮助表示赞赏
发送以下地址:1135 Thomas Ln。Apt B, Hixson, TN 37343
到以下 URL(已删除密钥)"https://maps.googleapis.com/maps/api/geocode/xml?address=[ADDRESS]&key=[KEY]"
导致以下响应:
<?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
<status>OK</status>
<result>
<type>street_address</type>
<formatted_address>1135 Thomas Lane, Hixson, TN 37343, USA</formatted_address>
<address_component>
<long_name>1135</long_name>
<short_name>1135</short_name>
<type>street_number</type>
</address_component>
<address_component>
<long_name>Thomas Lane</long_name>
<short_name>Thomas Ln</short_name>
<type>route</type>
</address_component>
<address_component>
<long_name>Hixson</long_name>
<short_name>Hixson</short_name>
<type>neighborhood</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Chattanooga</long_name>
<short_name>Chattanooga</short_name>
<type>locality</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Hamilton County</long_name>
<short_name>Hamilton County</short_name>
<type>administrative_area_level_2</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Tennessee</long_name>
<short_name>TN</short_name>
<type>administrative_area_level_1</type>
<type>political</type>
</address_component>
<address_component>
<long_name>United States</long_name>
<short_name>US</short_name>
<type>country</type>
<type>political</type> …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过美国人口普查地理编码器对一组地址进行批量地理编码:http : //geocoding.geo.census.gov/geocoder/
我发现了这个问题:
哈德利的建议非常适合将我的数据帧发送到 API 并取回地理编码地址。我遇到的问题是如何将返回的数据返回到数据框中。我会在那里评论他的回应,但不幸的是,由于这是一个新帐户,我还不能发表评论。
所以我的代码如下:
req <- POST("http://geocoding.geo.census.gov/geocoder/geographies/addressbatch",
body = list(
addressFile = upload_file("mydata.csv"),
benchmark = "Public_AR_Census2010",
vintage = "Census2010_Census2010"
),
encode = "multipart",
verbose())
stop_for_status(req)
content(req)
Run Code Online (Sandbox Code Playgroud)
当我运行 content(req) 时,我得到如下所示的数据:
"946\",\"123 MY STREET, ANYTOWN, TX,
99999\",\"Match\",\"Non_Exact\",\"123 MY STREET, ANYTOWN, TX,
99999\",\"-75.43486,80.423775\",\"95495654\",\"L\",\"99\",\"999\",\"021999\",\"3
005\"\n\"333\",\"456 MY STREET, ANYTOWN, TX,
99999\",\"Match\",\"Exact\",\"456 MY STREET, ANYTOWN, TX,
99999\",\"-75.38545,80.383747\",\"6546542\",\"R\",\"99\",\"999\",\"021999\",\"3002\"\n\
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用这里提到的 jsonlite 方法:Successly coercing paginated JSON object to R dataframe
以及谷歌搜索 httr/content 到数据框,并没有任何运气。我最接近获得我想要的东西的是使用
cat(content(req, "text"), "\n") 它得到的结果看起来像一个我可以用作数据框的 …
在调用Pittney Bowes Geocoder服务时,我正在使用Polly来捕捉异常.我正在使用一个抛出MessageProcessingException的g1client库.如果抛出此异常,我已经将调用包装在Polly网络策略中以重试调用最多3次,但Visual Studio坚持异常为"User-Unhandled"我需要修改哪些内容才能处理此异常?我正在使用Visual Studio 2017社区版和C#4.6.1.
try
{
var networkPolicy = Policy
.Handle<MessageProcessingException>()
.Or<Exception>()
.WaitAndRetry(
3,
retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)),
(exception, timeSpan, context) =>
{
System.Diagnostics.Debug.WriteLine("Exception being retried" + exception);
});
geocoderResponse = networkPolicy.Execute(() => geocoderService.Process(geocoderRequest));
}
catch (MessageProcessingException ex)
{
log.Error("MessageProcessingException calling the Geocoder service", ex);
throw ex;
}
catch (Exception ex)
{
log.Error("Exception calling the Geocoder service", ex);
throw ex;
}
Run Code Online (Sandbox Code Playgroud)
错误消息是:
g1client.MessageProcessingException occurred
HResult=0x80131500
Message=Unable to read data from the transport connection: A connection attempt failed because …Run Code Online (Sandbox Code Playgroud) geocoding ×10
google-maps ×6
android ×1
api ×1
bing-maps ×1
c# ×1
geolocation ×1
geospatial ×1
gis ×1
httr ×1
ios ×1
javascript ×1
mapkit ×1
mkmapview ×1
networking ×1
php ×1
polly ×1
r ×1