我创建了一个应用程序,从Web服务获取一组地址,我想映射它们.我知道Apple在MapKit中留下了这个,包括只有一个反向Geocoder.我想知道解决这个问题的最佳方法是什么.网络服务?Google Maps API(API密钥如何工作?)?CloudMade?
您对哪种服务最快,最容易使用,哪种服务最便宜(希望免费)有什么看法?
如何确定点是位于地球表面的多边形内部还是外部?
多边形的内部可以通过右手规则确定,即.当您在多边形周围走动时,多边形的内部位于右侧.
多边形可以
由于地球是一个球体,正常的射线穿越算法无法正常工作.
我需要计算给定点的纬度和经度.
我知道参考点的纬度和经度,以及表示距参考点的x和y轴上的米的值.从这些数据开始,我必须找到该点的纬度和经度.
我搜索了类似的问题,但看起来大多数问题都是关于找到两个纬度/长点之间的距离.我需要做相反的事情.
我能怎么做?我用的是Java
我正在寻找以编程方式获取某个美国城市所在美国郡名称的最佳/最简单的方法.似乎没有一个简单的API可用于这样一个(看似简单的)任务?
我有一些代码,我正在从API v2移植到v3.在旧代码中,我们有一个准确性字段,它返回到xml中(不确定名称,但确实代表了各种类型的置信度).在新的API中,我没有看到任何类似的字段.
如果我把"俄勒冈州,美国"放入搜索领域,我会得到5场比赛.前两个是"俄勒冈州,美国"和"俄勒冈州,俄亥俄州,美国".他们都有"partial_match"= false.这似乎不对,一个似乎是偏袒的,一个不是.另外,他们都回来了相同的"location_type"(APPROXIMATE).实际上,所有匹配都显示为非局部且具有相同的位置类型.
我的问题是,结果集中的任何字段是否都会对结果的准确性产生某种信心?在我的示例中,看起来似乎一个结果比任何其他结果更准确 - 以至于输入字符串与返回的QuickAddress字段完全匹配.
我正在尝试使用地理编码器宝石来查找地址和坐标.我希望它与我的PostGIS空间数据库和RGeo gem一起使用,它使用POINT功能而不是分别保存纬度和经度值.所以我尝试使用我的模型将地理编码器查找的结果保存到RGeo POINT功能中:
class Location < ActiveRecord::Base
attr_accessible :latlon, :name, :address
set_rgeo_factory_for_column(:latlon, RGeo::Geographic.spherical_factory(:srid => 4326))
geocoded_by :name_and_address do |obj, results|
if geo = results.first
obj.latlon = Location.rgeo_factory_for_column(:latlon).point(geo.longitude, geo.latitude)
end
end
after_initialize :init
after_validation :geocode
def init
self.latlon ||= Location.rgeo_factory_for_column(:latlon).point(0, 0)
end
def latitude
self.latlon.lat
end
def latitude=(value)
lon = self.latlon.lon
self.latlon = Location.rgeo_factory_for_column(:latlon).point(lon, value)
end
def longitude
self.latlon.lon
end
def longitude=(value)
lat = self.latlon.lat
self.latlon = Location.rgeo_factory_for_column(:latlon).point(value, lat)
end
def name_and_address
"#{self.name}, #{self.address}"
end
end
Run Code Online (Sandbox Code Playgroud)
在Rails控制台中,我现在可以:
test = Location.new(name: "Eiffel …Run Code Online (Sandbox Code Playgroud) 对我所做的简短而甜蜜的描述是一个联系表单,用于对用户地址进行地理编码(一旦他们点击提交),并将获取的lat&lng值放入隐藏字段.
我有一切工作,但我有两个单独的按钮,我只想要一个.因此,用户必须先点击一个按钮,然后才能点击提交按钮,这是愚蠢的."Find Geopoints"按钮调用js函数并将lat和lng值返回到表单上的隐藏字段,然后按下提交按钮,它将所有表单数据发布到MySQL数据库中.
同样,一切都在我的代码中工作我只需要将表单中的两个按钮合二为一,它仍然有效.
这是Javascript:
<script type="text/javascript">
var geocoder;
function initialize() {
geocoder = new google.maps.Geocoder();
map = new google.maps.Map(document.getElementById("map_canvas"));
}
function updateCoordinates(latlng)
{
if(latlng)
{
document.getElementById('lat').value = latlng.lat();
document.getElementById('lng').value = latlng.lng();
}
}
function codeAddress() {
var address = document.getElementById("address").value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
updateCoordinates(results[0].geometry.location);
} else {
alert("The address you entered could not be found: " + status);
}
});
}
</script>
Run Code Online (Sandbox Code Playgroud)
这是形式:
<form align="center" method="post">
<label for="firstName">First Name:</label> <input …Run Code Online (Sandbox Code Playgroud) 在国外使用我的应用程序时,谷歌GMSGeocoder会自动以本地语言返回响应.如何将其设置为始终以英语返回响应?
我使用GMS SDK 1.7,我的代码是这样的:
GMSGeocoder *geoCoder = [[GMSGeocoder alloc] init];
[geoCoder reverseGeocodeCoordinate:self.cellLocation.coordinate completionHandler:^(GMSReverseGeocodeResponse *respones, NSError *err) {
if([respones firstResult]) {
GMSAddress* address = [respones firstResult];
NSString* fullAddress = [NSString stringWithFormat:@"%@, %@",address.thoroughfare, address.locality];
self.theTextField.text = fullAddress;
} else {
self.theTextField.text = @"";
}
}];
Run Code Online (Sandbox Code Playgroud) 我有地址数据库,我想在谷歌地图上添加标记.
它只显示默认标记,看起来像geocoder.geocode()什么都不做.举个例子,我试图在"纽约市"上添加一个标记,但没有成功.
<script>
var geocoder;
var map;
var address = "new york city";
geocoder = new google.maps.Geocoder();
function initMap() {
var uluru = { lat: -25.363, lng: 131.044 };
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: uluru
});
var marker = new google.maps.Marker({
position: uluru,
map: map
});
codeAddress(address);
}
function codeAddress(address) {
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == 'OK') {
var marker = new google.maps.Marker({
position: address,
map: map
});
} else …Run Code Online (Sandbox Code Playgroud) 我正在使用Google Maps V3 api.我正在提交地址搜索以返回正确的地理编码结果,包括地址,建立名称和lat/lngs.
我的问题是来自地理编码器的响应可以采用不同的格式.它始终遵循相同的结构,但是一些响应对address_components数据结构使用不同的键.
例如,某些搜索会导致:
establishment -> location name
street_number -> address street number
route -> the street name
locality -> the city
administrative_area_level_1 -> the state
postal_code -> zip/postal code
Run Code Online (Sandbox Code Playgroud)
然而,如果我要搜索一般区域,例如"Hampton Beach,NH",我会收到:
sublocality -> beach name / area
administrative_area_level_3 -> city/town name
administrative_area_level_1 -> the state
postal_code -> zip/postal code
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,这两个回答有其不同之处.是否有一个已知的jquery库可用于处理这些不同的响应,以返回可用于人类可读方式的地址组件的数据集?
我会注意到响应也返回一个"formatted_address"类型,它返回它:"Hampton Beach,NH 03842,USA"或"Boston University,1 University Rd,Boston,MA 02215-1407,USA"正如你所看到的,这些也是非常不同的.我可以用逗号分割,但我想使用实际的address_components来实现完美的数据库插入.
geocoding ×10
google-maps ×3
javascript ×3
java ×2
activerecord ×1
callback ×1
cocoa-touch ×1
geo ×1
geolocation ×1
geometry ×1
gmsmapview ×1
html ×1
ios ×1
iphone ×1
math ×1
mkmapview ×1
mysql ×1
php ×1
postgis ×1