eal*_*iaj 5 html php mysql geolocation
我正在尝试制作一个需要地址和邮政编码的简单表单,所以我想知道是否有办法根据用户输入的内容自动填充这些字段.
因此,例如,如果他决定仅输入邮政编码,则城市和国家/地区字段将自动填充,反之亦然.
经过一段时间的搜索,我发现了我可以使用的这些数据库
但除此之外,我不知道如何使用PHP和MySQL来做到这一点.任何帮助,将不胜感激.
*这非常简单,您需要做的只是从用户那里获取邮政编码,然后您可以使用 google api 获取 $country 和 $city。在这里,我给你一个例子,说明如何从邮政编码(即邮政编码)获取经度和纬度。
$postcode=$_POST('postcode');
if($postcode)
{
$address = urlencode($postcode);
$url='http://maps.googleapis.com/maps/api/geocode/json?address='.$address.'&sensor=false';
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
$source = $data;
$obj = json_decode($source);
$lat = $obj->results[0]->geometry->location->lat;
$long = $obj->results[0]->geometry->location->lng;
}
$longitude=$long;
$latitude=$lat;
Run Code Online (Sandbox Code Playgroud)
您可以在数据库中插入上述两个变量 $longitude 和 $latitude。就这么简单:)。转到以下链接https://developers.google.com/maps/documentation/geocoding/?csw=1
现在,要从经度和纬度获取国家/地区名称,请使用反向地理编码。在 latLng 参数中提供逗号分隔的纬度/经度对。
var geocoder;
var map;
var infowindow = new google.maps.InfoWindow();
var marker;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(40.730885,-73.997383);
var mapOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
}
function codeLatLng() {
var input = document.getElementById("latlng").value;
var latlngStr = input.split(",",2);
var lat = parseFloat(latlngStr[0]);
var lng = parseFloat(latlngStr[1]);
var latlng = new google.maps.LatLng(lat, lng);//here you will get your country and city name
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
map.setZoom(11);
marker = new google.maps.Marker({
position: latlng,
map: map
});
infowindow.setContent(results[1].formatted_address);
infowindow.open(map, marker);
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
Run Code Online (Sandbox Code Playgroud)
在这里阅读有关反向地理编码的信息,并根据您的需要修改代码https://developers.google.com/maps/documentation/javascript/geocoding#ReverseGeocoding
使用: getLocations(latlng:GLatLng, 回调:函数)
该方法执行反向地理编码,将纬度/经度对转换为人类可读的地址。getLocations() 向 Google 地理编码服务发送请求,要求其返回给定经纬度的地址并在给定回调中传递响应。
由于此方法需要调用 Google 服务器,因此您还必须传递回调方法来处理响应。此响应将包含一个状态代码,如果成功,还包含一个或多个地标对象。
请注意,此方法可能会传递可寻址字符串,如上所述;在这种情况下,该服务将执行标准地理编码。但是,如果第一个参数包含 GLatLng,则服务将执行反向地理编码。