2012-11-20 24 views
40

मैं नक्शा दिखाने के बिना स्वत: पूर्ण एपीआई गूगल मानचित्र से अक्षांश और देशांतर प्राप्त करने के लिए कोशिश कर रहा हूँ बिना स्वत: पूर्ण से अक्षांश और देशांतर मिलता है। मेरी स्क्रिप्ट में स्वत: पूर्णता अच्छी तरह से काम करती है लेकिन मुझे अक्षांश और देशांतर नहीं मिल सकता है।गूगल मानचित्र एपीआई नक्शा

<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> 

उत्तर

0

Google स्थल API भी स्थान स्वत: पूर्ण सहित आरईएसटी एपीआई प्रदान करता है। https://developers.google.com/places/documentation/autocomplete

लेकिन सेवा से प्राप्त डेटा को मानचित्र के लिए उपयोग करना चाहिए।

+3

अब मामला होने लगते हैं नहीं करता है। गूगल एपीआई डॉक्स कहते हैं: "आप भी एक नक्शे के बिना जगह स्वत: पूर्ण उपयोग कर सकते हैं आप एक नक्शा दिखाने करते हैं, यह होना चाहिए एक गूगल मानचित्र जब आप किसी नक्शे के बिना जगह स्वत: पूर्ण सेवा से भविष्यवाणियों प्रदर्शित करते हैं, आप में शामिल करना चाहिए 'शक्ति।। Google के लोगो द्वारा। " यह API दस्तावेज़ से लिया जाता है: https://developers.google.com/places/documentation/autocomplete –

100

आप नीचे दिए गए कोड का उपयोग कर सकते हैं।

<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> 

... और इस भाग आपके प्रपत्र के अंदर है:

<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" /> 

मुझे आशा है कि यह मदद करता है।

4

आप स्वत: पूर्ण एपीआई से अक्षांश/देशांतर नहीं मिल सकता है के बाद से है कि एपीआई से गूगल द्वारा उत्पन्न डेटा अक्षांश और logitude क्षेत्र शामिल नहीं है। उदाहरण: -

{ 
    "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" 
} 

आप गूगल एपीआई का उपयोग कर सकते हैं देशांतर और अपने पते से अक्षांश प्राप्त करने के। जैसा कि आपने पहले ही कहा है, आपको एक छिपे हुए क्षेत्र को लागू करना चाहिए जहां परिणाम डाला जाना चाहिए। फिर आप समन्वय के साथ स्थान को एक साथ सहेज सकते हैं।

, उदा, https://maps.googleapis.com/maps/api/geocode/json?address=IIT%20Area,%20Mumbai,%20Maharashtra,%20India&sensor=false

मैं हाल ही में अपनी परियोजनाओं में से एक में इस समारोह को लागू किया:

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); 
    } 
    }); 
} 
+1

, बस आपको मिल place_id https://developers.google.com/places/documentation/details के लिए जगह विवरण का उपयोग – CallMeLaNN

+1

place.geometry.location.lat() – 4ndro1d

0

आप एक ही एपीआई से कोई अतिरिक्त एपीआई या यूआरएल कॉल के बिना प्राप्त कर सकते हैं।

एचटीएमएल

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

जावास्क्रिप्ट

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); 
    }); 
    } 
2

हाँ, आप कर सकते हैं:

var place = autocomplete.getPlace(); 

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

केवल जरूरत है:

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

Thx साथी। एक इलाज करता है। बस यह इंगित करने के लिए कि 'स्वत: पूर्ण' वस्तु 'new google.maps.places.Autocomplete (nativeElement', विकल्प) द्वारा बनाई गई वस्तु है। – dewd

-2
@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 
} 
संबंधित मुद्दे