MapBox प्रतीक / मार्करों "BearingSnap" या स्नैप स्थिति के लिए

वोट
3

वहाँ एक निश्चित स्थान है, जहां यह तो स्थान के लिए भगवान जाएगा करने के लिए माउस / मार्कर स्थानांतरित करने के लिए कोई तरीका है?

उदाहरण के लिए, कंप्यूटर जहां जब आप सही वर्ग के लिए एक शतरंज का टुकड़ा ले जाने पर शतरंज के खेल, वह उस स्थान पर जब आप / के पास टुकड़ा का जाना चौराहे के आसपास जाने स्नैप हो जाएगा।

तो क्या मैं चाहता हूँ एक मार्कर या एक निश्चित स्थान के लिए एक आइकन स्थानांतरित करने के लिए, मान लें कि कैलिफोर्निया की राजधानी जाने है, और मार्कर स्थान है कि मैं चाहता हूँ जब मैं इसे स्थानांतरित करने के भगवान और स्थान के पास मार्कर जाने जाएगा । लेकिन मैं यह भी अभी भी मार्कर स्थानांतरित करने के लिए अगर मैं चाहता हूँ सक्षम होना चाहते हैं।

मैं जानता हूँ कि MapBox जीएल है bearingSnap जो नक्शा वापस उत्तर में तस्वीरें के बाद उपयोगकर्ता नक्शा घूमता है लेकिन मैं सिर्फ माउस / मार्करों के लिए कुछ भी नहीं मिल रहा है और मुझे नहीं लगता कि मैं उपयोग कर सकते हैं bearingSnapइसके लिए।

धन्यवाद।

09/09/2016 को 17:17
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
-1

यह एक सुविधा है जो आपको और जीएल जे एस की नदी के ऊपर लागू करना चाहिए कर सकते हैं। जब आप का निर्माण मार्कर या GeoJSON सुविधा का समन्वय, वांछित ग्रिड से यह तस्वीर।

12/09/2016 को 18:53
का स्रोत उपयोगकर्ता

वोट
2

आप उपयोग कर सकते हैं टर्फ दूरी समारोह: turf.distance(pt1, pt2)2 अंक के बीच की दूरी को मापने के लिए। तो गणना दूरी एक निश्चित सीमा से किया जा रहा है, तो आप अपने स्नैप बिंदु के स्थान पर अपने खींचने बिंदु के स्थान निर्धारित कर सकते हैं।

मैं तुम्हें एक jsfiddle में एक काम उदाहरण है: https://jsfiddle.net/andi_lo/nmc4kprn/

function onMove(e) {
  if (!isDragging) return;
  var coords = e.lngLat;

  // Set a UI indicator for dragging.
  canvas.style.cursor = 'grabbing';

  // Update the Point feature in `geojson` coordinates
  // and call setData to the source layer `point` on it.
  geojson.features[0].geometry.coordinates = [coords.lng, coords.lat];
  map.getSource('point').setData(geojson);
  
  let snapTo = map.getSource('snap')._data;
  
  turf.featureEach(snapTo, (feature) => {
    let dist = turf.distance(feature, turf.point([coords.lng, coords.lat]));
    console.log(dist);
    // if the distance of the dragging point is under a certain threshold
    if (dist < 500) {
    	// set the location of the dragging point to the location of the snapping point
    	geojson.features[0].geometry.coordinates = feature.geometry.coordinates;
 	map.getSource('point').setData(geojson);
    }
  });
}

28/06/2017 को 08:10
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more