অক্ষাংশ এবং দ্রাঘিমাংশ থেকে কীভাবে আমি শহরের নাম পেতে পারি?


92

গুগল ম্যাপস জাভাস্ক্রিপ্টের জন্য এপিআই ব্যবহার করে অক্ষাংশ এবং দ্রাঘিমাংশ থেকে কোনও শহরের নাম পাওয়ার কী উপায় আছে?

যদি আমি দয়া করে একটি উদাহরণ দেখতে পারি?


আপনাকে এমন একটি ওয়েব পরিষেবা সন্ধান করতে হবে যা এটি সরবরাহ করে।
ডিভিল্যান্ড

উত্তর:


118

একে রিভার্স জিওকোডিং বলে


অসাধারণ! আমি এই উপর পড়েছি, এবং এখন ওভার অনেক বেশি প্রশ্ন আসছে;) ধন্যবাদ।
ডেনিস মার্টিনেজ

আপনি জাভাস্ক্রিপ্ট এপিআই ব্যবহার করছেন তবে প্রতি আইপি ঠিকানা এবং প্রতি একক ব্যবহারকারীর জন্য একই রকম হয় তবে আপনি যদি পিএইচপি ব্যবহার করেন উদাহরণস্বরূপ এবং আপনি মনে করেন যে আপনি এই সীমাগুলিতে পৌঁছে যাবেন আপনাকে অনুরোধগুলি সেকেন্ডে 1 বা সীমাবদ্ধ করতে হবে প্রক্সি সার্ভারগুলি তবে প্রক্সিগুলির সাথে সাবধান থাকুন, গুগল বোকা নয় এবং আপনি সেগুলি হাতুড়ি করতে পারবেন না। এখানে আরও তথ্য: developers.google.com/maps/docamentation/business/articles/…
অ্যান্ডি জি

26

এখানে একটি সম্পূর্ণ নমুনা:

<!DOCTYPE html>
<html>
  <head>
    <title>Geolocation API with Google Maps API</title>
    <meta charset="UTF-8" />
  </head>
  <body>
    <script>
      function displayLocation(latitude,longitude){
        var request = new XMLHttpRequest();

        var method = 'GET';
        var url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='+latitude+','+longitude+'&sensor=true';
        var async = true;

        request.open(method, url, async);
        request.onreadystatechange = function(){
          if(request.readyState == 4 && request.status == 200){
            var data = JSON.parse(request.responseText);
            var address = data.results[0];
            document.write(address.formatted_address);
          }
        };
        request.send();
      };

      var successCallback = function(position){
        var x = position.coords.latitude;
        var y = position.coords.longitude;
        displayLocation(x,y);
      };

      var errorCallback = function(error){
        var errorMessage = 'Unknown error';
        switch(error.code) {
          case 1:
            errorMessage = 'Permission denied';
            break;
          case 2:
            errorMessage = 'Position unavailable';
            break;
          case 3:
            errorMessage = 'Timeout';
            break;
        }
        document.write(errorMessage);
      };

      var options = {
        enableHighAccuracy: true,
        timeout: 1000,
        maximumAge: 0
      };

      navigator.geolocation.getCurrentPosition(successCallback,errorCallback,options);
    </script>
  </body>
</html>

ব্যবহারকারীর অনুমোদন ছাড়াই অক্ষাংশ এবং দ্রাঘিমাংশ থেকে ব্যবহারকারীর অবস্থান সন্ধানের কোনও উপায় আছে?
বিকাশ ভার্মা

8
@ ভিকাস ভার্মা হ'ল যদি আপনি তাদের সম্মতি ব্যতীত ব্যবহারকারীর অবস্থান
সন্ধানের

@ ওমিরিও ধন্যবাদ তবে আমি সেখানে কোড তৈরি করেছিলাম ব্যবহারকারীকে তিনি / সে এগিয়ে যেতে চাইলে অনুমতিতে ক্লিক করতে বাধ্য করলাম।
বিকাশ ভার্মা

4
এটি আসলে আমার সঠিক বাড়ির ঠিকানা দিয়েছে। ঠিক আমি যা চাই শহর এবং রাজ্য বা পিন কোডের মতো আমি কীভাবে নিষ্কাশন করব?
ydobonebi

6

নোড.জেজে আমরা নোড-জিওকোডার ব্যবহার করতে পারি এলএনজি থেকে ঠিকানা পেতে এনপিএম মডিউল ,

geo.js

var NodeGeocoder = require('node-geocoder');

var options = {
  provider: 'google',
  httpAdapter: 'https', // Default
  apiKey: ' ', // for Mapquest, OpenCage, Google Premier
  formatter: 'json' // 'gpx', 'string', ...
};

var geocoder = NodeGeocoder(options);

geocoder.reverse({lat:28.5967439, lon:77.3285038}, function(err, res) {
  console.log(res);
});

আউটপুট:

নোড জিও.জেএস

[ { formattedAddress: 'C-85B, C Block, Sector 8, Noida, Uttar Pradesh 201301, India',
    latitude: 28.5967439,
    longitude: 77.3285038,
    extra: 
     { googlePlaceId: 'ChIJkTdx9vzkDDkRx6LVvtz1Rhk',
       confidence: 1,
       premise: 'C-85B',
       subpremise: null,
       neighborhood: 'C Block',
       establishment: null },
    administrativeLevels: 
     { level2long: 'Gautam Buddh Nagar',
       level2short: 'Gautam Buddh Nagar',
       level1long: 'Uttar Pradesh',
       level1short: 'UP' },
    city: 'Noida',
    country: 'India',
    countryCode: 'IN',
    zipcode: '201301',
    provider: 'google' } ]

খুব সুস্পষ্ট এবং কার্যক্ষম প্রতিক্রিয়ার জন্য ধন্যবাদ, 'নোড-জিওকোডার' এবং '@ গুগল / ম্যাপস' এর নির্বাচনের মধ্যে কি কোনও পার্থক্য থাকবে? তারা এগুলি একইভাবে দেখায় যদিও
এডি

4
উভয় আউটপুট একই তবে নোড-জিওকোডারটি ঠিকানা পেতে সহজতর মডিউল এবং @ গুগল / মানচিত্র এপিআই যাতে আমাদের কনফিগার করতে হবে সেই ঠিকানাটি পেতে get
KARTHIKEYAN.A

5

গুগলের জিওকোড ওয়েব সার্ভিসের সর্বশেষ নমুনা এখানে

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&key=YOUR_API_KEY

YOUR_API_KEYআপনি যে এপিআই কীটি পেয়েছেন তা কেবল পরিবর্তন করুনগুগল জিওকোডিং এপিআই পাওয়া এপিআই কীটিতে করুন change

পি / এস: জিওকোডিং এপিআই প্লেস নট ম্যাপস এর অধীনে রয়েছে ;)


4

এখানে একটি প্রতিশ্রুতি ব্যবহার করে একটি আধুনিক সমাধান:

function getAddress (latitude, longitude) {
    return new Promise(function (resolve, reject) {
        var request = new XMLHttpRequest();

        var method = 'GET';
        var url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng=' + latitude + ',' + longitude + '&sensor=true';
        var async = true;

        request.open(method, url, async);
        request.onreadystatechange = function () {
            if (request.readyState == 4) {
                if (request.status == 200) {
                    var data = JSON.parse(request.responseText);
                    var address = data.results[0];
                    resolve(address);
                }
                else {
                    reject(request.status);
                }
            }
        };
        request.send();
    });
};

এবং এটিকে কল করুন:

getAddress(lat, lon).then(console.log).catch(console.error);

প্রতিশ্রুতি 'তারপর' এ ঠিকানা বস্তু বা 'ধরা' তে ত্রুটি স্থিতির কোডটি প্রদান করে


4
এটি অ্যাক্সেস কী ছাড়া কাজ করবে না। সেন্সর প্যারামিটারটিও অপ্রচলিত
জোরা তেনেভ

এটি আসলে কাজ করছে না
প্রোগ্রামিংহবি

3

নিম্নলিখিত নামটি শহরের নাম ( গুগল ম্যাপ জিও এপিআই ব্যবহার করে ) পেতে সুন্দর কাজ করে:

এইচটিএমএল

<p><button onclick="getLocation()">Get My Location</button></p>
<p id="demo"></p>
<script src="http://maps.google.com/maps/api/js?key=YOUR_API_KEY"></script>

লিপি

var x=document.getElementById("demo");
function getLocation(){
    if (navigator.geolocation){
        navigator.geolocation.getCurrentPosition(showPosition,showError);
    }
    else{
        x.innerHTML="Geolocation is not supported by this browser.";
    }
}

function showPosition(position){
    lat=position.coords.latitude;
    lon=position.coords.longitude;
    displayLocation(lat,lon);
}

function showError(error){
    switch(error.code){
        case error.PERMISSION_DENIED:
            x.innerHTML="User denied the request for Geolocation."
        break;
        case error.POSITION_UNAVAILABLE:
            x.innerHTML="Location information is unavailable."
        break;
        case error.TIMEOUT:
            x.innerHTML="The request to get user location timed out."
        break;
        case error.UNKNOWN_ERROR:
            x.innerHTML="An unknown error occurred."
        break;
    }
}

function displayLocation(latitude,longitude){
    var geocoder;
    geocoder = new google.maps.Geocoder();
    var latlng = new google.maps.LatLng(latitude, longitude);

    geocoder.geocode(
        {'latLng': latlng}, 
        function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                if (results[0]) {
                    var add= results[0].formatted_address ;
                    var  value=add.split(",");

                    count=value.length;
                    country=value[count-1];
                    state=value[count-2];
                    city=value[count-3];
                    x.innerHTML = "city name is: " + city;
                }
                else  {
                    x.innerHTML = "address not found";
                }
            }
            else {
                x.innerHTML = "Geocoder failed due to: " + status;
            }
        }
    );
}

0

@ সংচিত গুপ্তের মতো।

এই অংশে

if (results[0]) {
 var add= results[0].formatted_address ;
 var  value=add.split(",");
 count=value.length;
 country=value[count-1];
 state=value[count-2];
 city=value[count-3];
 x.innerHTML = "city name is: " + city;
}

শুধু ফলাফল অ্যারে কনসোল

if (results[0]) {
 console.log(results[0]);
 // choose from console whatever you need.
 var city = results[0].address_components[3].short_name;
 x.innerHTML = "city name is: " + city;
}

0

অনেকগুলি সরঞ্জাম উপলব্ধ

  1. গুগল ম্যাপস এপিআই যেমন লিখেছিল তেমন
  2. এই ডেটা ব্যবহার করুন " https://simplemaps.com/data/world-cities " বিনামূল্যে সংস্করণ ডাউনলোড করুন এবং এক্সেলকে JSON এ রূপান্তর করুন কিছু "অনলাইন রূপান্তরকারী যেমন" http://beautifytools.com/excel-to-json-converter.php "এর সাথে
  3. আইপি অ্যাড্রেস ব্যবহার করুন যা ভাল নয় কারণ কারও আইপি অ্যাড্রেস ব্যবহার করা ভাল ব্যবহারকারীদের মনে হতে পারে না যে আপনি তাদের হ্যাক করতে পারেন।

অন্যান্য নিখরচায় ও প্রদত্ত সরঞ্জামগুলিও উপলভ্য


-1

বিগডাটা ক্লাউডের নোডেজ ব্যবহারকারীদের জন্যও এটির জন্য একটি দুর্দান্ত এপিআই রয়েছে।

তাদের ক্লায়েন্টের জন্য এপিআই রয়েছে - বিনামূল্যে । তবে ব্যাকএন্ডের জন্যও , API_KEY ব্যবহার করে (কোটা অনুসারে বিনামূল্যে)।

তাদের গিটহাব পৃষ্ঠা

কোডটি দেখে মনে হচ্ছে:

const client = require('@bigdatacloudapi/client')(API_KEY);

async foo() {
    ...
    const location: string = await client.getReverseGeocode({
          latitude:'32.101786566878445', 
          longitude: '34.858965073072056'
    });
}

-1

যদি আপনি বিকাশের উদ্দেশ্যে গুগল জিওকোডিং এপিআই ব্যবহার না করতে চান তবে আপনি আরও কয়েকটি ফ্রি এপিআই উল্লেখ করতে পারেন। উদাহরণস্বরূপ, আমি অবস্থানটির নাম পাওয়ার জন্য [মানচিত্রের অনুসন্ধান] এপিআই ব্যবহার করেছি।

আপনি নিম্নলিখিত ফাংশনটি প্রয়োগ করে খুব সহজেই অবস্থানের নামটি আনতে পারেন

 const fetchLocationName = async (lat,lng) => {
    await fetch(
      'https://www.mapquestapi.com/geocoding/v1/reverse?key=API-Key&location='+lat+'%2C'+lng+'&outFormat=json&thumbMaps=false',
    )
      .then((response) => response.json())
      .then((responseJson) => {
        console.log(
          'ADDRESS GEOCODE is BACK!! => ' + JSON.stringify(responseJson),
        );
      });
  };


ওপি গুগল ম্যাপস এপিআই দিয়ে সমাধানের জন্য জিজ্ঞাসা করছিল, আমি মনে করি আপনি প্রশ্নের উত্তর দিচ্ছেন না।
মাইচা টাকাসেক

দুঃখিত তবে আমি এটি করার জন্য একটি বিকল্প উপায়ের পরামর্শ দিয়েছি। এবং যদি তার গুগল জিও কোডিং এপিআই কী থাকে তবে এটি দুর্দান্ত কাজ করে।
পঙ্কজ চতুর্বেদী

-3

আপনি খাঁটি পিএইচপি এবং গুগল জিওকোড এপিআই দিয়ে এটি করতে পারেন

/*
 *
 * @param latlong (String) is Latitude and Longitude with , as separator for example "21.3724002,39.8016229"
 **/
function getCityNameByLatitudeLongitude($latlong)
{
    $APIKEY = "AIzaXXXXXXXXXXXXXXXXXXXXXXXXXXX"; // Replace this with your google maps api key 
    $googleMapsUrl = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" . $latlong . "&language=ar&key=" . $APIKEY;
    $response = file_get_contents($googleMapsUrl);
    $response = json_decode($response, true);
    $results = $response["results"];
    $addressComponents = $results[0]["address_components"];
    $cityName = "";
    foreach ($addressComponents as $component) {
        // echo $component;
        $types = $component["types"];
        if (in_array("locality", $types) && in_array("political", $types)) {
            $cityName = $component["long_name"];
        }
    }
    if ($cityName == "") {
        echo "Failed to get CityName";
    } else {
        echo $cityName;
    }
}

4
একটি জাভাস্ক্রিপ্ট সমাধান নয়
চিন্তন পাঠক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.