গুগল চিহ্নিতকারী থেকে ল্যাট / এলএনজি পাওয়া


90

আমি টেনে আনে এমন চিহ্নিতকারী দিয়ে একটি Google মানচিত্র মানচিত্র তৈরি করেছি। যখন ব্যবহারকারী চিহ্নিতকারীকে টেনে নিয়ে যায়, তখন আমাকে নতুন অক্ষাংশ এবং দ্রাঘিমাংশ জানতে হবে, তবে এটি করার সর্বোত্তম পদ্ধতির কী তা আমি বুঝতে পারি না।

আমি কীভাবে নতুন স্থানাঙ্কগুলি পুনরুদ্ধার করতে পারি?

উত্তর:


134

এখানে জেএসফিডাল ডেমো । গুগল ম্যাপস এপিআই ভি 3-তে একটি ড্রাগেজেবল মার্কারের ল্যাট এবং এলএনজি ট্র্যাক করা বেশ সহজ। আমাদের বেস হিসাবে নিম্নলিখিত এইচটিএমএল এবং সিএসএস দিয়ে শুরু করা যাক।

<div id='map_canvas'></div>
<div id="current">Nothing yet...</div>

#map_canvas{
    width: 400px;
    height: 300px;
}

#current{
     padding-top: 25px;
}

গুগল ম্যাপটি শুরু করার জন্য এখানে আমাদের প্রাথমিক জাভাস্ক্রিপ্ট রয়েছে। আমরা এমন একটি চিহ্নিতকারী তৈরি করি যা আমরা এটি টেনে নেবার যোগ্য সম্পত্তিটিকে সত্যে সেট করতে চাই। অবশ্যই এটি মনে রাখবেন এটি লোড হওয়ার জন্য এটি আপনার উইন্ডোটির কোনও অনলোড ইভেন্টের সাথে সংযুক্ত করা উচিত, তবে আমি কোডটি এড়িয়ে যাব:

var map = new google.maps.Map(document.getElementById('map_canvas'), {
    zoom: 1,
    center: new google.maps.LatLng(35.137879, -82.836914),
    mapTypeId: google.maps.MapTypeId.ROADMAP
});

var myMarker = new google.maps.Marker({
    position: new google.maps.LatLng(47.651968, 9.478485),
    draggable: true
});

এখানে আমরা দুটি ঘটনা সংযুক্ত dragstartটেনে শুরুর ট্র্যাক করতে এবং dragendযখন মার্কার স্টপ টেনেছেন পেয়ে drack, এবং আমরা যেভাবে এটিকে সংযুক্ত ব্যবহার করা google.maps.event.addListener। আমরা এখানে যা করছি তা ডিভের currentসামগ্রী নির্ধারণ করা হচ্ছে যখন চিহ্নিতকারীটিকে টেনে আনা হবে এবং তারপরে যখন টানা বন্ধ হবে তখন চিহ্নিতকারীটির ল্যাব এবং এলএনজি সেট করুন। গুগল মাউস ইভেন্টটির একটি প্রপার্টি নাম 'ল্যাটল্যাং' রয়েছে যা ইভেন্টটি ট্রিগার হওয়ার সাথে সাথে 'google.maps.LatLng' অবজেক্ট দেয়। সুতরাং, আমরা এখানে যা করছি তা মূলত এই শ্রোতার জন্য সনাক্তকারী ব্যবহার করে যা দ্বারা ফিরে আসে google.maps.event.addListenerএবং latLngড্রেজেন্ডের বর্তমান অবস্থানটি সন্ধান করার জন্য সম্পত্তি পেতে পারে। ড্র্যাগ বন্ধ হয়ে গেলে আমরা যখন সেই ল্যাট এলএনজি পেয়ে যাই তখন আমরা আপনার currentডিভের মধ্যে প্রদর্শিত করব :

google.maps.event.addListener(myMarker, 'dragend', function(evt){
    document.getElementById('current').innerHTML = '<p>Marker dropped: Current Lat: ' + evt.latLng.lat().toFixed(3) + ' Current Lng: ' + evt.latLng.lng().toFixed(3) + '</p>';
});

google.maps.event.addListener(myMarker, 'dragstart', function(evt){
    document.getElementById('current').innerHTML = '<p>Currently dragging marker...</p>';
});

শেষ অবধি, আমরা আমাদের চিহ্নিতকারীকে কেন্দ্র করব এবং এটি মানচিত্রে প্রদর্শন করব:

map.setCenter(myMarker.position);
myMarker.setMap(map);

আমার উত্তর সম্পর্কে আপনার যদি কোনও প্রশ্ন থাকে তবে আমাকে জানান।


4
এটি দুর্দান্ত! আমার কাছে একটি অটো-সম্পূর্ণ অ্যাড্রেস ইনপুট ফিল্ডের পাশাপাশি একটি টেনে নেবার যোগ্য মার্কার সহ একটি মানচিত্র রয়েছে। যদি কেউ ইনপুট ফিল্ডটি ব্যবহার করে তবে ল্যাট লম্বা স্থানাঙ্কগুলিও প্রদর্শন করতে হবে। এর কোন সহজ সমাধান আছে কি?
কর্ক রস

41
var lat = marker.getPosition().lat();
var lng = marker.getPosition().lng();

গুগল ম্যাপস এপিআই - ল্যাটল্যাং- এ আরও তথ্য পাওয়া যাবে


markerএটিতে পদ্ধতি কল করার আগে আপনি কীভাবে তাত্ক্ষণিকভাবে কাজ করবেন ? উদাহরণস্বরূপ, আমি বিকাশকারীগণ.কম্পস / ম্যাপস / ডকুমেন্টেশন / জাভাস্ক্রিপ্ট / উদাহরণস্বরূপের দিকে তাকিয়ে আছি এবং একটি অনুসন্ধান সম্পন্ন হওয়ার পরে এবং একটি চিহ্নিতকারী উপস্থিত হওয়ার পরে আমি কীভাবে সেই চিহ্নিতকরণের দীর্ঘ / দীর্ঘতা পাব?
ব্যবহারকারীর 1063287

31

আপনি শুধু বলতে পেরেছিলাম getPosition()উপরMarker - আপনি যে চেষ্টা করছেন?

আপনি অবচিত, জাভাস্ক্রিপ্ট এপিআই এর v2 করছেন, তাহলে আপনি কল করতে পারেন getLatLng()উপরGMarker


আমি মনে করি গেটপজিশন () কল করার সময় আমার বিভ্রান্তিটি কোথায় ছিল - এটি কি এমন কিছু যা আমাকে কনস্ট্রাক্টরের সাথে যুক্ত করতে হবে যাতে মার্কারটি সরানো হলে স্থানাঙ্কগুলি জিজ্ঞাসা করতে জানে?
জেনাদিনিক

@ জেনাডিনিক আমার সম্পাদনায় আমি যে উদাহরণটির সাথে লিঙ্ক করেছি তাতে সহায়ক হতে পারে; এটি দেখায় যে কীভাবে কোনও শ্রোতাকে টেনে নিয়ে যাওয়ার ইভেন্টগুলির জন্য সংযুক্ত করা যায় যেখানে আপনি তার অবস্থানের জন্য চিহ্নিতকারীকে জিজ্ঞাসা করতে পারেন এবং আপনি চাইলেও এটি ব্যবহার করতে পারেন।
no.good.at.coding

আহ শীতল, এবং যদি আমি অধিবেশন বা ডিবিতে স্থানাঙ্কগুলি সঞ্চয় করতে চান, তবে আমি কি এজেএক্স কলের মাধ্যমে এটি করা উচিত? না কোন সহজ উপায় আছে?
জেনাদিনিক

আমি চিহ্নিতকারী আইডির সাথে দ্রুত এজাক্স পোস্টের চেয়ে সহজ কিছু ভাবতে পারি না এবং এটি বর্তমান সমন্বয়কারী :) তবে আপনি ব্যাচিংয়ের আপডেটগুলি বিবেচনা করতে পারেন বা ড্র্যাগটি শেষ না হওয়া অবধি কমপক্ষে কয়েক সেকেন্ড অপেক্ষা করতে এবং ব্যবহারকারী দেখতে পান না যে আর কোনও টানা টানা শুরু করুন যাতে আপনি চিহ্নিতকারীদের টেনে তোলার প্রক্রিয়া চলাকালীন অনুরোধগুলি সহ সার্ভারটি নিমজ্জিত করবেন না - অবস্থানগুলি স্থিতিশীল না হওয়া পর্যন্ত অপেক্ষা করুন, তাই বলুন। এই অবশ্যই ক্লায়েন্ট যা দেখায় তার তুলনায় আপনার সার্ভার-সাইডের অবস্থা কতটা পিছনে সামর্থ্য তার উপর নির্ভর করে।
no.good.at.coding

4
getPosition()একটি বস্তু ফেরত দেয়, যাতে নির্দিষ্টভাবে দ্রাঘিমাংশ / দ্রাঘিমাংশ পেতে, আপনাকে অবশ্যই কল করতে হবে lat()এবং lng()সেখান থেকে যথাক্রমে।
জেফ

20

এটা চেষ্টা কর

var latlng = new google.maps.LatLng(51.4975941, -0.0803232);
var map = new google.maps.Map(document.getElementById('map'), {
    center: latlng,
    zoom: 11,
    mapTypeId: google.maps.MapTypeId.ROADMAP
});
var marker = new google.maps.Marker({
    position: latlng,
    map: map,
    title: 'Set lat/lon values for this property',
    draggable: true
});

google.maps.event.addListener(marker, 'dragend', function (event) {
    document.getElementById("latbox").value = this.getPosition().lat();
    document.getElementById("lngbox").value = this.getPosition().lng();
});

8
// show the marker position //

console.log( objMarker.position.lat() );
console.log( objMarker.position.lng() );

// create a new point based into marker position //

var deltaLat = 1.002;
var deltaLng = -1.003;

var objPoint = new google.maps.LatLng( 
  parseFloat( objMarker.position.lat() ) + deltaLat, 
  parseFloat( objMarker.position.lng() ) + deltaLng
);

// now center the map using the new point //

objMap.setCenter( objPoint );

2

আপনার চিহ্নিতকারীকে একটি শ্রোতা যুক্ত করা উচিত এবং ড্র্যাগ বা ড্রেজেন্ড ইভেন্টটি শুনতে হবে এবং আপনি যখন এই ইভেন্টটি পাবেন তখন ইভেন্টটির অবস্থানটি জিজ্ঞাসা করুন।

দেখুন http://code.google.com/intl/fr/apis/maps/documentation/javascript/reference.html#Marker মার্কার দ্বারা আলোড়ন সৃষ্টি ঘটনা বর্ণনার জন্য। এবং ইভেন্ট শ্রোতাদের যুক্ত করার জন্য পদ্ধতিগুলির জন্য http://code.google.com/intl/fr/apis/maps/docamentation/javascript/references.html#MapsEventListener দেখুন ।


2

var map = new google.maps.Map(document.getElementById('map_canvas'), {
  zoom: 10,
  center: new google.maps.LatLng(13.103, 80.274),
  mapTypeId: google.maps.MapTypeId.ROADMAP
});

var myMarker = new google.maps.Marker({
  position: new google.maps.LatLng(18.103, 80.274),
  draggable: true
});

google.maps.event.addListener(myMarker, 'dragend', function(evt) {
  document.getElementById('current').innerHTML = '<p>Marker dropped: Current Lat: ' + evt.latLng.lat().toFixed(3) + ' Current Lng: ' + evt.latLng.lng().toFixed(3) + '</p>';
});
google.maps.event.addListener(myMarker, 'dragstart', function(evt) {
  document.getElementById('current').innerHTML = '<p>Currently dragging marker...</p>';
});
map.setCenter(myMarker.position);
myMarker.setMap(map);

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

function showPosition(position) {
  document.getElementById('current').innerHTML = '<p>Marker dropped: Current Lat: ' + position.coords.latitude + ' Current Lng: ' + position.coords.longitude + '</p>';
  var myMarker = new google.maps.Marker({
    position: new google.maps.LatLng(position.coords.latitude, position.coords.longitude),
    draggable: true
  });
  google.maps.event.addListener(myMarker, 'dragend', function(evt) {
    document.getElementById('current').innerHTML = '<p>Marker dropped: Current Lat: ' + evt.latLng.lat().toFixed(3) + ' Current Lng: ' + evt.latLng.lng().toFixed(3) + '</p>';
  });
  google.maps.event.addListener(myMarker, 'dragstart', function(evt) {
    document.getElementById('current').innerHTML = '<p>Currently dragging marker...</p>';
  });
  map.setCenter(myMarker.position);
  myMarker.setMap(map);
}
getLocation();
#map_canvas {
  width: 980px;
  height: 500px;
}

#current {
  padding-top: 25px;
}
<script src="http://maps.google.com/maps/api/js?sensor=false&.js"></script>
<!DOCTYPE html>
<html lang="en">

<head>

</head>

<body>
  <section>
    <div id='map_canvas'></div>
    <div id="current">
      <p>Marker dropped: Current Lat:18.103 Current Lng:80.274</p>
    </div>
  </section>


</body>

</html>


4
যদিও এই কোডটি প্রশ্নের উত্তর দিতে পারে, কীভাবে এবং কেন এটি সমস্যার সমাধান করে তার তথ্য সরবরাহ করে তার দীর্ঘমেয়াদী মান উন্নত করে।
এল_জে

-3

এই প্রশ্নের অনেকগুলি উত্তর রয়েছে, যা কখনই আমার পক্ষে কাজ করেনি (গেটপজিশনের পরামর্শ সহ) (যা মার্কার্স অবজেক্টগুলির জন্য উপলব্ধ কোনও পদ্ধতি বলে মনে হয় না)। V3 মানচিত্রে আমার জন্য একমাত্র পদ্ধতিটি হ'ল (সহজভাবে):

var lat = marker.lat();
var long = marker.lng();

4
আমি মনে করি আপনার অর্থ marker.position.lat()এবংmarker.position.lng()
জেফ পেকেট

অথবা আপনার ব্যবহার করতে হবে marker.getPosition().lat()এবংmarker.getPosition().lng()
সার্জিও রেইস

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