2016-09-07 11 views
5

Mam OpenstreetMap z leaflet. Używam this Wtyczka do ulotki do zapytania z Overpass.Jak zapytać o przejście przez ulotkę?

var opl = new L.OverPassLayer({ 
    query: "(area['name'='Roma']; node(area)['amenity'='drinking_water']);out;", 


}); 

Ale moja mapa nic nie pokazuje, gdy jest używana z wtyczką.

Co jest nie tak? Uwaga: Moje zapytanie działa na podstawie this.

EDIT:

Ta kwerenda działa z wtyczki, ale nie na http://overpass-turbo.eu/?

var opl = new L.OverPassLayer({ 
query: "(node(BBOX)['amenity'='drinking_water'];);out;", 

});

PEŁEN PRZYKŁAD:

var attr_osm = 'Map data &copy; <a href="http://openstreetmap.org/">OpenStreetMap</a> contributors', 
attr_overpass = 'POI via <a href="http://www.overpass-api.de/">Overpass API</a>'; 
var osm = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {opacity: 0.7, attribution: [attr_osm, attr_overpass].join(', ')}); 

var map = new L.Map('map').addLayer(osm).setView(new L.LatLng(49.592041, 8.648164),2); 

//OverPassAPI overlay 
var opl = new L.OverPassLayer({ 
    query: "(node(BBOX)['amenity'='drinking_water'];);out;", 


}); 

map.addLayer(opl); 
+0

Czy widzisz wszystkie żądania HTTP dotyczące przejścia przez bramkę w konsoli przeglądarki? Jaka jest odpowiedź? – kes

+0

brak żądań HTTP – Khan

+0

Czy jesteś w stanie opublikować próbkę pełnego kodu @Khan, której moglibyśmy użyć do odtworzenia Twojego problemu? Na przykład czy dodajesz opl do mapy używając 'map.addLayer (opl)' po utworzeniu nowej warstwy? – kes

Odpowiedz

0

Rozwiązałem mój problem z innym plugin.

mogę użyć zapytania wiadukt-turbo:

var attr_osm = 'Map data &copy; <a href="http://openstreetmap.org/">OpenStreetMap</a> contributors', 
attr_overpass = 'POI via <a href="http://www.overpass-api.de/">Overpass API</a>'; 
var osm = new L.TileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {opacity: 0.7, attribution: [attr_osm, attr_overpass].join(', ')}); 

var map = new L.Map('map').addLayer(osm).setView(new L.LatLng(43.592041,2.648164),14); 


var opl = new L.OverPassLayer({ 
query: "node[amenity=drinking_water]({{bbox}});out;",})", 
}); 

map.addLayer(opl); 

lub z niestandardową okrąg na mapie

var opl = new L.OverPassLayer({ 
query: "node[amenity=drinking_water]({{bbox}});out;",})", 
onSuccess: function(data) { 


    for(i=0;i<data.elements.length;i++) { 
     e = data.elements[i]; 



     var pos = new L.LatLng(e.lat, e.lon); 
     var color = 'green'; 
     L.circle(pos, 5, { 
     color: color, 
     fillColor: '#fa3', 
     fillOpacity: 1, 
     }).addTo(map); 

    } 
    }, 
}); 

map.addLayer(opl); 

Można nawet konwertować dane otrzymane od Wiadukt z this do GeoJSON. Możliwe jest bezpośrednie narysowanie dróg i obszaru.

2

Twój poziom powiększenia jest zbyt niska, jesteś w zasadzie pobierania danych dla dużej części ziemi. W związku z tym Twoje zapytanie Przekroczono limit czasu i nie uzyskasz żadnego wyniku.

Zmień

new L.LatLng(49.592041, 8.648164),2)

do

new L.LatLng(49.592041, 8.648164),14)

Ponadto ja zalecanej do:

  • dodać parametr [timeout:x] ograniczyć czas pracy zapytaniu
  • dodaj maksymalną liczbę obiektów, które chcesz przesłać, np. out 100; dla max. 100 węzłów.

Ponadto, nie można użyć (BBOX) w turbowalu. Prawidłową składnią turbo obejścia byłaby ({{bbox}}).

Powiązane problemy