คำตอบสั้น ๆ
วันที่เมธอด containerPoint จากการร้องขอคุณสมบัติย้อนกลับไปในปี 2012และวันนี้มันสับสนเล็กน้อย
คำตอบที่ดีที่สุดคือคำอธิบายของ Leaflet maintainer Vladimir Agafonkin:
"layerPoint เป็นจุดที่สัมพันธ์กับเลเยอร์แผนที่ (div ซึ่งมีไทล์และเครื่องหมาย) ไม่ใช่คอนเทนเนอร์แผนที่ด้านนอกสิ่งที่คุณต้องการคือ map.layerPointToContainerPoint แต่ฉันยอมรับว่าไม่มีวิธีที่สะดวกในการรับมันทันทีดังนั้นการจัดตารางเวลานี้ สำหรับเวอร์ชั่นถัดไป "
คำตอบที่ยาว
ในรายละเอียดมากขึ้น:
วิธีการแปลงหลักของประชาชนในแผ่นปลิวแม้จะไม่ค่อยมีใครใช้โดยนักพัฒนาแอพลิเคชันที่มีและL.Map.project(latlng [, zoom])
L.Map.unproject(point [, zoom])
แผนที่เว็บถูกแบ่งออกเป็นตารางย่อยแต่ละอันมีจำนวนพิกเซลเท่ากัน ที่ระดับการซูมที่สูงขึ้นแผนที่จะแบ่งเป็นไทล์จำนวนมากขึ้นโดยมีจำนวนพิกเซลที่สอดคล้องกันมากขึ้น ดังนั้นขนาดพิกเซลของแผนที่จึงขึ้นอยู่กับระดับการซูม
ซึ่งหมายความว่าหากคุณกำลังยุ่งกับหน้าต่างการสาธิต Leaflet ในเบราว์เซอร์ของคุณผลลัพธ์ของ L.Map.project` สำหรับ latlng ที่กำหนดจะเปลี่ยนเฉพาะเมื่อคุณซูมเข้าและออก
ในฐานะ Leaflet เวอร์ชั่นล่าสุด (0.7.3) คำจำกัดความของการL.Map.latLngToLayerPoint
อ่าน:
latLngToLayerPoint: function (latlng) {
var projectedPoint = this.project(L.latLng(latlng))._round();
return projectedPoint._subtract(this.getPixelOrigin());
}
ในทางตรงกันข้ามL.Map.latLngToContainerPoint
อ่าน:
latLngToContainerPoint: function (latlng) {
return this.layerPointToContainerPoint(this.latLngToLayerPoint(L.latLng(latlng)));
}
ด้วยการL.Map.layerPointToContainerPoint
กำหนดให้เป็น:
layerPointToContainerPoint: function (point) {
return L.point(point).add(this._getMapPanePos());
}
เมธอดแผนที่ส่วนตัว_getMapPanePos()
ส่งคืนออฟเซ็ตระหว่างตำแหน่งแผนที่ปัจจุบันและตำแหน่งเมื่อสร้างครั้งแรก สิ่งนี้จะเปลี่ยนแปลงระหว่างแพนแผนที่เท่านั้น (ไม่ใช่ระหว่างซูม) ดังนั้นความแตกต่างระหว่าง layerPoint และ containerPoint ที่สอดคล้องกับ latlng ที่กำหนดคือ layerPoint คือตำแหน่งของ latlng ในคอนเทนเนอร์แผนที่<div>
พร้อมกับแผนที่ที่ตำแหน่งเริ่มต้นในขณะที่ containerPoint คือตำแหน่งปัจจุบันของ latlng ในคอนเทนเนอร์แม็<div>
พ