سؤال

على follwoing رمز الحلقات أكثر من كائن json لوضع علامة على خريطة جوجل.الذي يعمل بشكل جيد.

function displayMarkers(data){
    for(var i = 0; i < data.Lat.length; i++){
        var point = new GLatLng(data.Lat[i],data.Lng[i]);
        marker = new GMarker(point);
        map.addOverlay(marker);

            // here's the problem
        GEvent.addListener(marker, "click", function(){
            alert(data.Name[i]);
        });
    }
}

المشكلة هي كل علامة يستجيب دائما مع القيمة الأخيرة من "أنا".أنا عالقة في محاولة لمعرفة طريقة لتحديد علامة الذي تم النقر عليه بطريقة أو بأخرى الحصول على المعلومات الصحيحة من كائن البيانات.

أنا أفكر حول إنشاء مجموعة من علامات في خلق حلقة من خلال استنادا إلى علامات الموقع ، ولكن أن يشعر فعال حقا لي.

أي مساعدة دائما موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

على انقر فوق الحدث على الخريطة يمر ثلاثة عناصر مختلفة.

GEvent.addListener(map, "click", function(overlay, latlng, overlaylatlng) {
  // overlay = GOverlay or null
  // latlng = GLatLng
  // overlaylatlng = GLatLng or null
});

إذا كان المستخدم لا انقر على تراكب, 'تراكب" و "overlaylatlng' سوف تكون فارغة.

تحديث: لديك لإضافة المستمع إلى الخريطة (لا علامة) إذا كنت ترغب في الحصول على GOverlay من ذلك.على انقر فوق الحدث GMarker ترجع فقط GLatLng.

نصائح أخرى

وخريطة تدعم حدث ONTAP، الذي يمر مؤشر علامة الذي تم اختياره، يرجى الرجوع إلى <لأ href = "http://www.androidguys.com/2008/09/09/maps-itemizedoverlay-and -يتم / "يختلط =" نوفولو noreferrer "> هذا سبيل المثال:

يبدو أن الحلول المذكورة أعلاه فقط العودة إحداثيات العلامة التي لا حل مشكلتي.ربما أفعل شيئا خاطئا.

ومع ذلك ، فإن طريقة حلها هو ببساطة إضافة خاصية علامة مثل هذا

function createMarker(latlng,name) {
      var marker = new GMarker(latlng);

      // HERE WE GO
      marker.value = name;

      GEvent.addListener(marker,"click", function() {
        addToList(this.value);
      });
      return marker;
}

تحديث:على aboves يحل طريقة واحدة ، ولكن أسهل طريقة هي أن نعلق الحدث على الخريطة كما ذكر في التعليقات

GEvent.addListener(map, "click", function(marker, point){
    alert(marker);
});

وبسيط كما فطيرة.

    GEvent.addListener(marker, "click", function(o){
            alert(o);
    });
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top