2013-10-29 8 views
5

मैं एक छवि के आधार पर एक नक्शा बनाने की कोशिश कर रहा हूं जो 16384x16384 पीएक्स है, लेकिन मैं इस दी गई छवि के पिक्सेल निर्देशांक का उपयोग करके विशिष्ट स्थानों पर मार्कर जोड़ना चाहूंगा।पुस्तिका में पिक्सेल निर्देशांक कैसे प्रोजेक्ट करें?

मैं एक टाइल परत, एक नक्शा तत्व और अधिकतम सीमाएं निर्धारित बनाया ताकि मैं छवि से बाहर स्क्रॉल नहीं कर सकते हैं, इस कोड का उपयोग:

var map = L.map('map', { 
     maxZoom: 6, 
     minZoom: 2, 
     crs: L.CRS.Simple 
    }).setView([0, 0], 2); 
    var southWest = map.unproject([0,16384], map.getMaxZoom()); 
    var northEast = map.unproject([16384,0], map.getMaxZoom()); 
    map.setMaxBounds(new L.LatLngBounds(southWest, northEast)); 

    L.tileLayer('tiles/{z}/{x}/{y}.png', { 
     tms: true 
    }).addTo(map); 

अंक मैं करने के लिए जोड़ना चाहते हैं नक्शा GeoJSON के रूप में एक बाहरी फ़ाइल में जमा हो जाती है, और वे इस http://www.de-egge.de/maps/terranigma/terraPoints.js

की तरह लग रहा कोड के इस स्निपेट का उपयोग कर उन्हें लोड:

रों
var terraPoints = new L.geoJson(points, { 
     onEachFeature: function (feature, layer) { 
      layer.bindPopup(
       "<b>Ort: </b>" + feature.properties["points[, 1]"] 
      ); 
     } 
    }); 

    map.addLayer(terraPoints); 

लेकिन ज़ाहिर है, वे नहीं है कैसे, क्योंकि संदर्भ प्रणाली मेल नहीं खाते हैं। अंक पिक्सेल निर्देशांक का उपयोग करते हैं, लेकिन मेरा नक्शा भौगोलिक निर्देशांक का उपयोग करता है।

क्या उन्हें लोड करते समय अंक को "अप्रचलित" करने का कोई तरीका है?

किसी भी मदद की बहुत सराहना की है और अग्रिम धन्यवाद!

उत्तर

5
var geoJsonTest = new L.geoJson(geojsonFeature, { 
    coordsToLatLng: function (newcoords) { 
     return (map.unproject([newcoords[1], newcoords[0]], map.getMaxZoom())); 
    }, 
    pointToLayer: function (feature, coords) {  
     return L.circleMarker(coords, geojsonMarkerOptions); 
    } 
}); 

इस तरह आप स्थिति में उपयोग आप इसे अभी तक समझ नहीं आया। समन्वय देखकर उलटा हुआ है मैंने उन्हें विकल्प में बदल दिया। मेरे लिए पूरी तरह से काम करता है।

+0

यह काम करता है, धन्यवाद। मुझे बस 'geojsonMarkerOptions' निर्दिष्ट करना पड़ा – DeEgge

0

L.GeoJSON में coordsToLatLng() है जो निर्देशांक मैपिंग के लिए उपयोगी होना चाहिए।

http://leafletjs.com/reference.html#geojson-coordstolatlng

+0

आपकी प्रतिक्रिया के लिए धन्यवाद, लेकिन मैं विधि का उपयोग कैसे करें के बारे में उलझन में हूं। अगर मैं प्रत्येक समन्वय के माध्यम से लूप करता हूं तो भी मैं कोई मार्कर नहीं जोड़ सकता। या क्या मुझे विधि को प्रत्येक फीचर पर कॉल करना है? 'के लिए (मैं टेरापॉइंट्स में) {latLng = coordsToLatLng (i.geometry.coordinates); L.marker (LatLng) .addTo (नक्शा); } ' – DeEgge

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