मैं दो संभावित विकल्पों के बारे में सोच सकता हूं।
सबसे पहले आप GeoLocation APIceejayoz suggested के रूप में उपयोग करने पर विचार करना चाहेंगे। इसे कार्यान्वित करना बहुत आसान है, और यह पूरी तरह क्लाइंट-साइड समाधान है। नक्शे को केंद्र में भौगोलिक-स्थान का उपयोग कर, बस का उपयोग करें:
map.setCenter(new google.maps.LatLng(position.coords.latitude,
position.coords.longitude), 13);
... जियोलोकेशन के getCurrentPosition()
विधि के success()
कॉलबैक अंदर।
दुर्भाग्य से केवल कुछ आधुनिक ब्राउज़र ही भू-स्थान API का समर्थन कर रहे हैं। इसलिए आप MaxMind's GeoLite City जैसी सेवा का उपयोग कर क्लाइंट के आईपी पते को हल करने के लिए सर्वर-साइड समाधान का उपयोग करने पर भी विचार कर सकते हैं। फिर आप Google मानचित्र API का उपयोग कर ब्राउज़र के अंदर उपयोगकर्ता के शहर और देश को बस geocode कर सकते हैं।
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps API Geocoding Demo</title>
<script src="http://maps.google.com/maps?file=api&v=2&sensor=false"
type="text/javascript"></script>
</head>
<body onunload="GUnload()">
<div id="map_canvas" style="width: 400px; height: 300px"></div>
<script type="text/javascript">
var userLocation = 'London, UK';
if (GBrowserIsCompatible()) {
var geocoder = new GClientGeocoder();
geocoder.getLocations(userLocation, function (locations) {
if (locations.Placemark) {
var north = locations.Placemark[0].ExtendedData.LatLonBox.north;
var south = locations.Placemark[0].ExtendedData.LatLonBox.south;
var east = locations.Placemark[0].ExtendedData.LatLonBox.east;
var west = locations.Placemark[0].ExtendedData.LatLonBox.west;
var bounds = new GLatLngBounds(new GLatLng(south, west),
new GLatLng(north, east));
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
map.addOverlay(new GMarker(bounds.getCenter()));
}
});
}
</script>
</body>
</html>
सीधे शब्दों में सर्वर साइड का समाधान पते के साथ userLocation = 'London, UK'
बदल देते हैं: निम्नलिखित एक संक्षिप्त उदाहरण हो सकता है।
आप द्वारा map.addOverlay(new GMarker(bounds.getCenter()));
लाइन से छुटकारा पाने के मार्कर निकाल सकते हैं: निम्नलिखित ऊपर के उदाहरण से एक स्क्रीनशॉट है।
स्रोत
2010-05-17 18:33:36
भौगोलिक-स्थान API स्पष्ट जवाब है। हालांकि, अगर एपीआई उपलब्ध है, तो स्थान तय करने के लिए ब्राउज़र पक्ष पर कुछ समय लग सकता है। इस बीच आपको उपयोगकर्ता को कुछ अस्थायी स्थान दिखाना होगा और फिर स्थान तय होने के बाद मानचित्र को स्थानांतरित करना होगा। यह सही महसूस करने के लिए एक जीयूआई चुनौती की तरह लगता है। यदि मुझे अनुमानित स्थान स्वीकार्य है तो मुझे डैनियल वासलो के समाधान पसंद हैं। लोड होने के बाद मानचित्र को स्थानांतरित करना मेरे लिए संदिग्ध लगता है। –