*Това е много лесно, което трябва да направите, е просто да получите пощенския код от потребителя и с това можете да получите $country и $city с помощта на google api.тук ви давам пример за това как получавам дължина и ширина от пощенския код, т.е. пощенския код.
$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;
отколкото можете да вмъкнете горните две променливи $longitude и $latitude във вашата база данни.simple като това :) . отидете на следната връзка 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);
}
});
}
прочетете за обратното геокодиране тук и променете кода според вашите нужди https:// developers.google.com/maps/documentation/javascript/geocoding#ReverseGeocoding
Използвайте:getLocations(latlng:GLatLng, обратно извикване:функция)
Този метод извършва обратно геокодиране, преобразуване на двойка ширина/дължина в четими от човека адреси. getLocations() изпраща заявка до услугата за геокодиране на Google, като я моли да върне адреса за дадената ширина и да предаде отговора в даденото обратно извикване.
Тъй като този метод изисква извикване към сървър на Google, трябва също да предадете метод за обратно извикване, за да обработите отговора. Този отговор ще съдържа код на състоянието и, ако е успешен, един или повече обекта Placemark.
Обърнете внимание, че този метод може вместо това да предаде адресируем низ, както е посочено по-горе; в този случай услугата ще направи стандартен геокод. Ако обаче първият аргумент съдържа GLatLng, услугата ще извърши обратно геокодиране.