我想发现一个google.maps.LatLng在里面google.maps.Polygon.
我怎样才能做到这一点 ?
干杯,
我正在构建一个用户为其列表提供地址的应用程序.要求一个简单的用户为他提供的每个地址提供纬度和经度当然是不切实际的!
我可以向Google Maps API提供地址吗?如果是这样,怎么样?
谢谢.
我们使用Google地理编码API将地址映射到纬度和经度.
以下是编码的示例网址(返回json) -
http://maps.googleapis.com/maps/api/geocode/json?address=Dallas&sensor=false
消息:OVER_QUERY_LIMIT
好吧,这是有道理的,因为我们超过2500每日限制,所以我们放置这样的API密钥 -
http://maps.googleapis.com/maps/api/geocode/json?key=xxxxx&address=Dallas&sensor=false
消息:REQUEST_DENIED
我想知道在何处/如何放置API密钥.
我厌倦了谷歌的地理编码,并决定尝试替代方案.Data Science Toolkit(http://www.datasciencetoolkit.org)允许您对无限数量的地址进行地理编码.R有一个很好的包,可以作为其功能的包装(CRAN:RDSTK).该软件包具有一个street2coordinates()与Data Science Toolkit的地理编码实用程序接口的函数.
但是,street2coordinates()如果您尝试对像City,Country这样简单的地理编码,则RDSTK功能不起作用.在下面的例子中,我将尝试使用该函数来获取凤凰城的纬度和经度:
> require("RDSTK")
> street2coordinates("Phoenix+Arizona+United+States")
[1] full.address
<0 rows> (or 0-length row.names)
Run Code Online (Sandbox Code Playgroud)
数据科学工具包的实用工具非常有效.这是提供答案的URL请求:http://www.datasciencetoolkit.org/maps/api/geocode/json?seamor = false& address = Phoenix + Arizona + UniteditedStates
我感兴趣的是对多个地址进行地理编码(完整的地址和城市名称).我知道Data Science Toolkit URL可以很好地工作.如何与URL连接并将多个纬度和经度带入具有地址的数据框?
这是一个示例数据集:
dff <- data.frame(address=c(
"Birmingham, Alabama, United States",
"Mobile, Alabama, United States",
"Phoenix, Arizona, United States",
"Tucson, Arizona, United States",
"Little Rock, Arkansas, United States",
"Berkeley, California, United States",
"Duarte, California, United States",
"Encinitas, California, United States", …Run Code Online (Sandbox Code Playgroud) 我们希望网站支持国际地理编码.我们对使用限制和/或限制请求的API持谨慎态度,这可能会随着服务量的增加而使我们的裤子缩短.Facebook等现代网站如何实施地理编码?是否有工具为全世界实施准确的内部可扩展地理编码解决方案?
在我的Flex项目中,我可以按地址添加标记而不是:
var myGeographicCoordinates:LatLng = new LatLng(myLatitude, myLongitude);
Run Code Online (Sandbox Code Playgroud)
例如,通过"巴黎,法国"添加标记
我从Adam Freeman的书"Metro Revealed:使用XAML和C#构建Windows 8应用程序"中获取/调整了以下代码,以便在知道坐标时获取地址:
public static async Task<string> GetAddressForCoordinates(double latitude, double longitude)
{
HttpClient httpClient = new HttpClient {BaseAddress = new Uri("http://nominatim.openstreetmap.org")};
HttpResponseMessage httpResult = await httpClient.GetAsync(
String.Format("reverse?format=json&lat={0}&lon={1}", latitude, longitude));
JsonObject jsonObject = JsonObject.Parse(await httpResult.Content.ReadAsStringAsync());
return jsonObject.GetNamedObject("address").GetNamedString("road");
Run Code Online (Sandbox Code Playgroud)
}
如何获得相反的结果(如果已知地址,则为坐标)?
我正在为此增加一笔赏金; 我已经得到的(如上所示)是反向地理编码(获取坐标的地址); 我需要的是地理编码(获取地址的坐标).
基于我上面的反向地理编码代码,我猜它可能是这样的:
public static async Task<string> GetCoordinatesForAddress(string address)
{
HttpClient httpClient = new HttpClient {BaseAddress = new Uri("http://nominatim.openstreetmap.org")};
HttpResponseMessage httpResult = await httpClient.GetAsync(
String.Format("format=json&address={0}", address));
JsonObject jsonObject = JsonObject.Parse(await httpResult.Content.ReadAsStringAsync());
return jsonObject.GetNamedObject("address").GetNamedString("lat"); // <-- what about "lon"?
} …Run Code Online (Sandbox Code Playgroud) 如何在不发出其他请求的情况下过滤两个(或更多)国家/ 地区的Google Geocode API结果和components参数的使用情况.
例:
http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&components=country:DE,AT&address=wienhttp://maps.googleapis.com/maps/api/geocode/xml?sensor=false&components=country:AT,DE&address=wienhttp://maps.googleapis.com/maps/api/geocode/xml?sensor=false&components=country:AT|country:DE&address=wien我在文档中有什么东西可以让它成为可能,或者我根本不能制作它?
我尝试了设置德国和奥地利的合并范围的解决方法,但这只是权衡结果而不是过滤它们,所以我得到了一个我不想要的结果http://maps.googleapis.com/maps/api/geocode/xml?sensor=false&components=bounds:55.058,17.161|46.372,5.866&address=new%20york.在这种情况下,我想要一个ZERO_RESULTS状态.
是否可以转换(在PHP后端):
<?php
$Address = "Street 1, City, Country"; // just normal address
?>
Run Code Online (Sandbox Code Playgroud)
至
<?php
$LatLng = "10.0,20.0"; // latitude & lonitude
?>
Run Code Online (Sandbox Code Playgroud)
我目前使用的代码是默认代码:
<script type='text/javascript' src='https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false'></script>
<script>
function initialize() {
var myLatlng = new google.maps.LatLng(10.0,20.0);
var mapOptions = {
zoom: 16,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById('map'), mapOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'This is a caption'
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="map"></div>
Run Code Online (Sandbox Code Playgroud)
我已经阅读了https://developers.google.com/maps/documentation/geocoding一段时间了,但我觉得我没经验.
谢谢.
我最近发布了一个关于在欧洲城市绘制位置作为地图上的点的问题.请参阅R,获取城市的经度/纬度数据并将其添加到我的数据框中
城市xlsx文件包含欧洲约20000个城市.
尝试使用地理编码查找纬度/经度数据时收到错误消息.我已经插入了下面的部分代码:
cities <- read.xlsx("EU_city.xlsx",1)
# get frequencies
freq <- as.data.frame(table(cities))
library(plotrix)
freq$Freq <- rescale(freq$Freq, c(1,10)) # c(scale_min, scale_max)
# get cities latitude/longitude - kindly provided by google:
library(ggmap)
lonlat <- geocode(unique(cities))
cities <- cbind(freq, lonlat)
error message:
Error: is.character(location) is not TRUE
Run Code Online (Sandbox Code Playgroud)
我猜我的数据框中的数据(城市)在地理编码调用中找不到.如果在地理编码中不匹配,有没有办法忽略dtaframe中的城市
建议后更新问题.......
尝试过地理编码(as.character(cities))
然后我的框架看起来像这样:
> cities <- cbind(freq, lonlat)
> cities
cities Freq lon lat
1 ARNHEM 1.00 NA NA
2 ATHENS 3.25 NA NA
3 BAAR 1.00 NA NA
4 BAD VILBEL 1.00 NA …Run Code Online (Sandbox Code Playgroud) geocoding ×10
google-maps ×5
javascript ×2
r ×2
apache-flex ×1
api ×1
c# ×1
geolocation ×1
maps ×1
php ×1