كيفية تحديث Pixelposition من Infowindows مخصص على خرائط Google V3 بعد السحب؟

StackOverflow https://stackoverflow.com/questions/1868663

سؤال

أقوم بإنشاء مزج جديد على رأس خرائط Google. إنه بسيط بما فيه الكفاية أنني اخترت استخدام V3 لتوفير فترة حياة أطول.

ومع ذلك، هناك بعض الاحتياجات الخاصة التي لا توفرها خرائط Google Infowindow.

لقد وضعت في وضع Infowindow المخصص مع Marker.ProjectionContainer.pixelposition. أحصل على الموضع الصحيح بعد التكبير، ولكن السحب لا يقوم بتحديث علامات Pixelposition. كيف يمكنني الحصول على فرق بين علامات الموضع القديم و جديد بعد السحب؟

أو

هل ينبغي أن أستخدم OverlayView. بدلا من محاولة اختراق موقف من دوم؟ أعتقد أن الخرائط "تم تحديث Infowindows" تلقائيا / متوقفة على لوحات.

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

المحلول

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

يجب عليك استخدام OverlayView وبعد ذلك يمكنك استخدام تقنيات MVC لربط خاصية موضع العلامة.

function MyOverlay(marker) {
  this.bindTo('position', marker);
}
MyOverlay.prototype = new google.maps.OverlayView();

MyOverlay.prototype.position_changed = function() {
  this.draw();
};

MyOverLay.prototype.draw = function() {
  // This is where you recalculate the latLngToPixel stuff where latLng
  // is this.get('position');
};

تحتاج أيضا إلى تنفيذ بقية واجهة OverlayView: Onadd و Onremove.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top