Soru Google harita api, harita olmadan otomatik tamamlamadan enlem ve boylamı alır


Haritayı göstermeden otomatik tamamlama API'sinin haritasından enlem ve boylamı almaya çalışıyorum. Komut dizimde otomatik tamamlama iyi çalışıyor ancak enlem ve boylamı alamıyorum.

<script type="text/javascript">
   function initialize() {

 var options = {
  types: ['(cities)']
 };

 var input = document.getElementById('searchTextField');
 var autocomplete = new google.maps.places.Autocomplete(input, options);
}
   google.maps.event.addDomListener(window, 'load', initialize);

   var geocoder = new google.maps.Geocoder();
    var address = autocomplete;

geocoder.geocode( { 'address': address}, function(results, status) {

  if (status == google.maps.GeocoderStatus.OK) {
    var latitude = results[0].geometry.location.lat();
    var longitude = results[0].geometry.location.lng();
    alert(latitude);
  } 
}); 

</script>

44
2017-11-20 17:24


Menşei




Cevaplar:


Aşağıdaki kodu kullanabilirsiniz.

<script src="http://maps.googleapis.com/maps/api/js?libraries=places" type="text/javascript"></script>

<script type="text/javascript">
    function initialize() {
        var input = document.getElementById('searchTextField');
        var autocomplete = new google.maps.places.Autocomplete(input);
        google.maps.event.addListener(autocomplete, 'place_changed', function () {
            var place = autocomplete.getPlace();
            document.getElementById('city2').value = place.name;
            document.getElementById('cityLat').value = place.geometry.location.lat();
            document.getElementById('cityLng').value = place.geometry.location.lng();
            //alert("This function is working!");
            //alert(place.name);
           // alert(place.address_components[0].long_name);

        });
    }
    google.maps.event.addDomListener(window, 'load', initialize); 
</script>

... ve bu bölüm senin formunun içinde:

<input id="searchTextField" type="text" size="50" placeholder="Enter a location" autocomplete="on" runat="server" />  
<input type="hidden" id="city2" name="city2" />
<input type="hidden" id="cityLat" name="cityLat" />
<input type="hidden" id="cityLng" name="cityLng" />  

Umut ediyorum bu yardım eder.


109
2017-11-23 13:09





Tek ihtiyaç:

var place = autocomplete.getPlace();
// get lat
var lat = place.geometry.location.lat();
// get lng
var lng = place.geometry.location.lng();

17
2018-02-02 06:33



Thx dostum. Bir muamele yapar. Sadece şunu belirtmek için autocomplete tarafından oluşturulan nesne new google.maps.places.Autocomplete(nativeElement, Seçenekler) ` - dewd


Google tarafından oluşturulan veriler, bu API’dan oluşturulan veriler enlem ve günlük alanı içermediğinden, otomatik tamamlama API'sinden enlem / boylamı alamazsınız. Örnek:-

{
   "predictions" : [
      {
         "description" : "IIT Mumbai, Mumbai, Maharashtra, India",
         "id" : "ac3235cda973818a89b5fe21ad0f5261ac9b6723",
         "matched_substrings" : [
            {
               "length" : 10,
               "offset" : 0
            }
         ],
         "reference" : "CkQ0AAAAHWg-RSngiYHHdz_yqyFKmfSoBwT-_PW0k8qQDhsbiVrk7BlPHCyJb58OthledMUTGYS5Vhec1Zj2L7w9Rq0zDxIQrbn05RX1QgWHkSXsmTk1TRoU45APW2BBRIUsA3t6XBy_8s0BPPA",
         "terms" : [
            {
               "offset" : 0,
               "value" : "IIT Mumbai"
            },
            {
               "offset" : 12,
               "value" : "Mumbai"
            },
            {
               "offset" : 20,
               "value" : "Maharashtra"
            },
            {
               "offset" : 33,
               "value" : "India"
            }
         ],
         "types" : [ "establishment", "geocode" ]
      }
   ],
   "status" : "OK"
}

Boylam ve Latitude’u adresinizden almak için Google API’yı kullanabilirsiniz. Daha önce söylediğin gibi, sonucun eklenmesi gereken gizli bir alan uygulamanız gerekir. Daha sonra konumu koordinatlarla birlikte kaydedebilirsiniz.

Örneğin https://maps.googleapis.com/maps/api/geocode/json?address=IIT%20Area,%20Mumbai,%20Maharashtra,%20India&sensor=false

Son zamanlarda bu işlevi projelerimden birinde uyguladım:

function getLatLngFromAddress(city, country){

  var address = city +", "+ country;
  var geocoder = new google.maps.Geocoder();

  geocoder.geocode( { 'address': address}, function(results, status) {

    if (status == google.maps.GeocoderStatus.OK) {
      $('#latitude').val(results[0].geometry.location.Pa);
      $('#longitude').val(results[0].geometry.location.Qa);

    } else {
      console.log("Geocode was not successful for the following reason: " + status);
    }
  });
}

4
2018-05-30 13:21



Aldığınız place_id için Yer Ayrıntılarını kullanmanız yeterlidir. developers.google.com/places/documentation/details - CallMeLaNN
place.geometry.location.lat () - 4ndro1d


Evet yapabilirsin:

var place = autocomplete.getPlace();

document.getElementById('lat').value = place.geometry.location.lat();
document.getElementById('lon').value = place.geometry.location.lng();

2
2017-10-10 12:46





Onu yer nesnesinden alabilirsiniz.

var place = autocomplete.getPlace ();

var enlem = place.geometry.location.lat (); var boylam = place.geometry.location.lng ();


1
2017-08-11 08:13





Google Rehber API'sı ayrıca Yerler Otomatik Tamamlama dahil olmak üzere REST API sağlar. https://developers.google.com/places/documentation/autocomplete

Ancak servisten elde edilen veriler bir harita için kullanılmalıdır.


0
2017-11-20 17:35



Şimdi durum böyle görünmüyor. Google API dokümanları şunları söylüyor: "Harita Otomatik Yerleştirmeyi harita bile olmadan kullanabilirsiniz. Bir harita gösterirseniz, bir Google haritası olmalıdır. Yer Otomatik Tamamlama hizmetinden bir harita olmadan tahminleri görüntülediğinizde," Google’ın logosu " Bu API belgelerinden alınır: developers.google.com/places/documentation/autocomplete - Karl Glennon


Herhangi bir ek api veya url çağrısı olmadan aynı api'den alabilirsiniz.

HTML

<input class="wd100" id="fromInput" type="text" name="grFrom" placeholder="From" required/>

JavaScript

var input = document.getElementById('fromInput');
var defaultBounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(-33.8902, 151.1759),
    new google.maps.LatLng(-33.8474, 1512631)
)

var options = {
bounds: defaultBounds   
}

var autocomplete = new google.maps.places.Autocomplete(input, options);
var searchBox = new google.maps.places.SearchBox(input, {
         bounds: defaultBounds
});


google.maps.event.addListener(searchBox, 'places_changed', function() {
    var places = searchBox.getPlaces();


console.log(places[0].geometry.location.G); // Get Latitude
console.log(places[0].geometry.location.K); // Get Longitude

//Additional information
console.log(places[0].formatted_address); // Formated Address of Place
console.log(places[0].name); // Name of Place






    if (places.length == 0) {
      return;
    }

    var bounds = new google.maps.LatLngBounds();
    console.log(bounds);
     });
   }

0
2017-08-05 11:31





@Override
public void onPlaceSelected(Place place) {
    LatLng autoCompleteLatLng = place.getLatLng();
    newLoc = new Location("New");
    newLoc.setLatitude(autoCompleteLatLng.latitude);
    newLoc.setLongitude(autoCompleteLatLng.longitude);

    geoLocate(newLoc);//mark it in map
}

-2
2018-04-08 01:47