2016-06-27 11 views
5

मैं MapBox साथ पत्रक का उपयोग कर रहा है और मैं नक्शा इतना के मद्देनजर निर्धारित करना चाहते हैं:पत्रक - Fitbounds और रखने के केंद्र

  1. सभी मार्करों दिखाई
  2. केंद्र एक विशिष्ट करने के लिए सेट कर दिया जाता हैं बिंदु

सेटव्यू और फिटबाउंड के साथ अलग-अलग बिंदुओं को अलग करना आसान है, लेकिन मुझे नहीं पता कि एक ही समय में दोनों को कैसे सेट करना है क्योंकि सेटव्यू सीमाओं को बदलता है और फिटबाउंड केंद्र बदलता है। एक समाधान एक केंद्र और ज़ूम को परिभाषित करने के लिए किया जा सकता है लेकिन मुझे कैसे पता चलेगा कि कौन सा ज़ूम मेरे सभी मार्करों को दिखने की अनुमति देगा?

संपादित

मैं समाधान IvanSanchez ने सुझाव दिया कार्यान्वित और यह उम्मीद के रूप में काम करता है:

let ne=leafletBounds.getNorthEast(); 
let sw=leafletBounds.getSouthWest(); 
let neSymetric=[ne.lat + (center.lat - ne.lat)*2, ne.lng + (center.lng - ne.lng)*2]; 
let swSymetric=[sw.lat +(center.lat - sw.lat)*2, sw.lng + (center.lng - sw.lng)*2]; 
leafletBounds.extend(L.latLngBounds(swSymetric, neSymetric)); 

उत्तर

3

अपने सीमा प्राप्त करें, और केंद्र-आप चाहते हैं के साथ बिंदु समरूपता लगाने से एक दूसरे L.Bounds उदाहरण पैदा करते हैं। एक नया L.Bounds बनाएं जिसमें मूल सीमाएं और सममित सीमाएं हों। इसके साथ fitBounds() चलाएं।

+0

धन्यवाद, यह एक आसान और कुशल समाधान है! – DevLR

0

मुझे इसका एक और समाधान मिला। Fitbound() के साथ अपना नक्शा समायोजित करने के बाद आप बस map.panTo ([lat, lng]) को कॉल कर सकते हैं। मैं VueJs का उपयोग कर रहा हूं और इसे घुड़सवार() जीवन चक्र हुक में बुला रहा हूं।

मैं फिटिंग सीमाएं कर रहा हूं ताकि आप उपयोगकर्ता के स्थान और भौगोलिक सुविधा को दूर देख सकें, लेकिन फिर मैं पैनटो का उपयोग करता हूं ताकि उपयोगकर्ता का वास्तविक स्थान फिट बाउंड के बाद मानचित्र के केंद्र में हो। ऐसा लगता है कि अब तक निर्बाध रूप से काम करता है।

संबंधित मुद्दे