Geocoding
Procesi i kthimit te adresave nga fjale ne koordinata.
1. Geocoding Requests
Aksesojme Google Maps API geocoding service me ane te objektit google.maps.Geocoder . Metoda Geocoder.geocode() inicializon nje` request per geocoding service.
Objekti GeocodeRequest mban fushat:
{
address: string,
latLng: LatLng,
bounds: LatLngBounds,
region: string
}
· address (e domosdoshme*) — Adresa.
· latLng (e domosdoshme *) — Pika LatLng per te cilen po kerkojme adresen me te afert.
· bounds (opsional) —LatLngBounds brenda te cilave te behet geocode .
· region (opsional) — Kodi i rajonit.
Nese kalojme address behet procesi i geocode.
Nese kalojme latLng behet procesi i reversegeocode.
2. Geocoding Results
Objekti GeocoderResults ka formen:
results[]: {
types[]: string,
formatted_address: string,
address_components[]: {
short_name: string,
long_name: string,
types[]: string
},
geometry: {
location: LatLng,
location_type: GeocoderLocationType
viewport: LatLngBounds,
bounds: LatLngBounds
}
}
· Types array qe percakton tipin e rezultatit. Shembull "Tirane" kthen "locality" qe do te thote se eshte qytet "Tirane".
· formatted_address e njohur dhe si adresa postale
· address_component[] array qe mban komponentet e adreses si me siper.
· postcode_localities[] array me te gjitha lokalitetet e perfshira ne nje kod postar ne rast se ka me teper se nje.
· geometry :
location eshte nje LatLng me vlerat e latitude,longitude nga geocode.
location_type informacion shtese mbi location.
google.maps.GeocoderLocationType.ROOFTOP preciz.
google.maps.GeocoderLocationType.RANGE_INTERPOLATED i perafert ndermjet dy pikave precize.
google.maps.GeocoderLocationType.GEOMETRIC_CENTER qender gjeometrike e nje polyline (rruge) ose polygon (rajon).
google.maps.GeocoderLocationType.APPROXIMATE i perafert.
o viewport viewport e rekomanduar.
o bounds (kthehet ne menyre opsionale) mban LatLngBounds qe kane rezultatin e kthyer.
Address Component Types
types[] :
· street_address .
· route .
· intersection kryqezim i madh rrugesh.
· political entitet politik, poligon i nje aseksioni administrativ.
· country entitet politik nacional
· administrative_area_level_1 poshte nivelit country.
· administrative_area_level_2
· administrative_area_level_3
· colloquial_area emri i perdorur me teper per entitetin.
· locality qyteti.
· sublocality niveli poshte qytetit.
· neighborhood lagjia.
· premise grup ndertesash me te njejtin emer
· subpremise niveli me poshte.
· postal_code adresa postare.
· natural_feature nje zone natyrore.
· airport
· park .
· post_box
· street_number .
· floor kati.
· room dhoma me numer.
Status Codes
status :
· google.maps.GeocoderStatus.OK geocode i suksesshem.
· google.maps.GeocoderStatus.ZERO_RESULTS geocode i suksesshem por ska rezultate, adresa e pasakte.
· google.maps.GeocoderStatus.OVER_QUERY_LIMIT me teper se cduhet te dhena.
· google.maps.GeocoderStatus.REQUEST_DENIED kerkesa u pezullua, shkrim i pasakte.
· google.maps.GeocoderStatus.INVALID_REQUEST tregon se nuk kemi query , pra mungon adresa.
3. SHEMBUJ
Geocode
<!DOCTYPE html>
<html>
<head>
<title>Geocoding service</title>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
var geocoder;
var map;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(41.331650 , 19.8318);
var mapOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
}
function codeAddress() {
var address = document.getElementById('address').value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
alert('Geocode i pasuksesshem: ' + status);
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="panel">
<input id="address" type="textbox" value="Tirana, Albania">
<input type="button" value="Geocode" onclick="codeAddress()">
</div>
<div id="map-canvas" style="width:600px;height:400px"></div>
</body>
</html>
Reversegeocode
<!DOCTYPE html>
<html>
<head>
<title>Reverse Geocoding</title>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script>
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(41.331650 , 19.8318);
var mapOptions = {
zoom: 8,
center: latlng,
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);
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(‘Nuk u gjeten rezultate’);
}
} else {
alert('Geocode i passuksesshem: ' + status);
}
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script> </head>
<body>
<div id="panel">
<input id="latlng" type="text" value="41.331650 , 19.8318">
<input type="button" value="Reverse Geocode" onclick="codeLatLng()">
</div>
<div id="map-canvas" style="width:600px;height:400px"></div>
</body>
</html>