Mise à jour du Dépliant de GeoJSON couche avec des données à l'intérieur de la boîte englobante
Je suis en utilisant dépliant/JavaScript pour la première fois et je veux afficher une carte, avec un GeoJSON couche qui changent à chaque mouvement... Pour ne montrer que les points sur la zone.
C'est mon code source:
//Function to refresh points to display
function actualiseGeoJSON() {
//Default icon for my points
var defaultIcon = L.icon({
iconUrl: '../images/icones/cabane.png',
iconSize: [16, 16],
iconAnchor: [8, 8],
popupAnchor: [0, -8]
});
//We create each point with its style (from GeoJSON file)
function onEachFeature(feature, layer) {
var popupContent = '<a href="' + feature.properties.url + '">' + feature.properties.nom + "</a>";
layer.bindPopup(popupContent);
var cabaneIcon = L.icon({
iconUrl: '../images/icones/' + feature.properties.type + '.png',
iconSize: [16, 16],
iconAnchor: [8, 8],
popupAnchor: [0, -8]
});
layer.setIcon(cabaneIcon);
}
//We download the GeoJSON file (by using ajax plugin)
var GeoJSONlayer = L.geoJson.ajax('../exportations/exportations.php?format=geojson&bbox=' + map.getBounds().toBBoxString() + '',{
onEachFeature: onEachFeature,
pointToLayer: function (feature, latlng) {
return L.marker(latlng, {icon: defaultIcon});
}
}).addTo(map);
}
//We create the map
var map = L.map('map');
L.tileLayer('http://maps.refuges.info/hiking/{z}/{x}/{y}.png', {
attribution: '© Contributeurs d\'<a href="http://openstreetmap.org">OpenStreetMap</a>',
maxZoom: 18
}).addTo(map);
//An empty base layer
var GeoJSONlayer = L.geoJson().addTo(map);
//Used to only show your area
function onLocationFound(e) {
var radius = e.accuracy / 2;
L.marker(e.latlng).addTo(map);
actualiseGeoJSON();
}
function onLocationError(e) {
alert(e.message);
actualiseGeoJSON();
}
function onMove() {
//map.removeLayer(GeoJSONlayer);
actualiseGeoJSON();
}
map.locate({setView: true, maxZoom: 14});
//Datas are modified if
map.on('locationerror', onLocationError);
map.on('locationfound', onLocationFound);
map.on('moveend', onMove);
J'ai essayé de supprimer le calque dans ma première fonction, mais GeoJSONlayer n'est pas défini
J'ai essayé de supprimer le calque dans onMove() mais rien ne s'affiche
J'ai essayé de supprimer le calque dans moveend événement, mais j'ai une erreur de syntaxe...
Si quelqu'un peut m'aider...
Désolé pour mon mauvais anglais, le français guy ith français les noms de fonction
faut apprendre l'anglais mec ! 🙂
et vous n'avez pas besoin du rayon variable puisque vous ne semblez pas dessiner un cercle de la précision de la position 😉
et vous n'avez pas besoin du rayon variable puisque vous ne semblez pas dessiner un cercle de la précision de la position 😉
OriginalL'auteur leosw | 2013-03-15
Vous devez vous connecter pour publier un commentaire.
Je vois que vous êtes à l'aide de la notice ajax plugin.
La façon la plus simple pour obtenir votre carte de travail est de télécharger toutes les données disponibles, dès le début, en fournissant un géant de la boîte englobante, et l'ajouter à la carte, juste une fois. Ce sera probablement très bien, sauf quand il y a incroyablement beaucoup de cabines et les trucs à télécharger.
Mais si vous souhaitez actualiser régulièrement les données, basé sur le cadre de sélection, vous pouvez utiliser la méthode d'actualisation dans le dépliant-ajax plugin:
Donc d'abord:
Puis pour chaque mise à jour:
Vous pouvez également définir la couche comme une propriété de la carte, au lieu d'un
var
:Et ensuite vous y référer comme suit:
OriginalL'auteur flup
cette notice plugin est plus adapté à votre objectif, de gérer la carte des événements et de zoom.
La mise en cache les requêtes à distance et bien plus encore.
http://labs.easyblog.it/maps/leaflet-layerjson/
Étendre L. GeoJSON avec plus de fonctionnalités et d'appui à l'ajax ou jsonp demande. Voir les commentaires du code source pour plus de documentation.
OriginalL'auteur StefanoCudini