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

ご意見ありがとうございますが、このメソッドの使用方法がわかりません。すべての座標をループすると、マーカーは追加できません。または、onEachFeatureメソッドを呼び出す必要がありますか? 'for(私はterraPoints){latLng = coordsToLatLng(i.geometry.coordinates); L.marker(latLng).addTo(map); } ' – DeEgge

関連する問題