2012-03-26 15 views
5

Chcę narysować wiele punktów geograficznych za pomocą ulotki. Dlatego chcę użyć płótna HTML5, aby poprawić wydajność. Moja datasoure to geoJSON. Jak widziałem w dokumentacji Ulotki, nie można jeszcze narysować pozycji geo jako płótna.ulotka js: rysuj punkty POI jako obraz na płótnie

var anotherGeojsonLayer = new L.GeoJSON(coorsField, { 
     pointToLayer: function (latlng){ 
      return new L.Marker(latlng, { 
       icon: new BaseballIcon() 
      }); 
     } 
    }); 

myślę, że powinienem podłączyć tutaj:

pointToLayer: function (szerokość geograficzną miejsca położonego) {}

Czy ktoś wie jak wyciągnąć moje długość i szerokość geograficzną obiektów jak płótno?

Odpowiedz

5

Rozszerzanie oryginalnej odpowiedzi w przypadku, gdy ktoś tego potrzebuje dla Ulotki 1.0. Nadal powinieneś używać L.circleMarker()(Leaflet circleMarker documentation) zamiast L.marker(), ale sposób korzystania z płótna uległ zmianie.

W ulotce 1.0 eksperymentalna zmiana L_PREFER_CANVAS została zaktualizowana do oficjalnej opcji mapy preferCanvas(Leaflet preferCanvas documentation).

var map = L.map('mapid', { 
     preferCanvas: true 
    }); 

Można również jawnie ustawić renderowanie kanwy; Myślę, że robi to tak samo, jak opcja preferCavas. Oto Leaflet documentation for canvas.

var map = L.map('mapid', { 
     renderer: L.canvas() 
    }); 

Każda z tych opcji (preferCanvas: true lub renderer: L.canvas()) z L.circleMarker() była znacznie szybciej niż zwykłą warstwę używając L.marker().