私のリーフレットに問題があります。リーフレット1.0 fitBoundsがajaxの読み込みで期待どおりに機能しない
私は、ajaxでロードされた複数のgeoJsonファイル(7つまで)を持っています。すべてのファイルがロードされた後にfitBoundsにしたいと思います。
私はこのようなものを持っている:
function BoundsObject() {
this.boundsArray = [];
}
function addGeoJsonToMap(map, geojson, boundsObject) {
var newLayer = L.geoJson(geojson);
map.addLayer(newLayer);
var current_bounds = newLayer.getBounds();
var southwest = current_bounds.getSouthWest();
var northeast = current_bounds.getNorthEast();
boundsObject.boundsArray.push([[southwest.lat, southwest.lng], [northeast.lat, northeast.lng]]);
}
function downloadFile(fileurl, map, boundsObject) {
return $.ajax({
url: url,
dataType: "json"}).done(function(geojson) {
if (geojson) {
addgeojsontomap(map, geojson, boundsObject);
}
});
}
これは私のマップがどのように見えるかです:
<div id="someid" class="my-leaflet-map" data-urls="encodedurlformaps" data-height="800px"></div>
そして、私は初期化時にマップを構築しよう:
$(function() {
var gps_data = [];
$(".my-leaflet-map").each(function(){
var data = $(this).data();
if (data['urls']) {
data['urls'] = window.decodeURIComponent(data['urls']).split(',');
data['map_id'] = $(this).attr("id");
$(this).css("height", data['height']);
gps_data.push(data);
}
});
if (gps_data.length > 0) {
for (var i=0; i<gps_data.length; ++i){
var ajax_calls = [];
var boundsObjectForEachMap = new BoundsObject();
var map = L.map(gps_data[i]['map_id']);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
for (var j=0; j<gps_data[i]['urls'].length; ++j){
ajax_calls.push(
downloadFile(
gpx_data[i]['urls'][j], map, boundsObject)
);
}
$.when.apply(this, ajax_calls).done(function(){
map.fitBounds(boundsObject.boundsArray);
}
}
}
}
それをlocalhostマップを使って作業しています...インターネットにプッシュすると動作しません。 私は境界を持っている:(そう多分にGeoJSONがキャッシュ内にある) ウェブブラウザをリフレッシュ
:
[[29.9264, -118.24368],
[34.14555, -90.07148],
[25.76168, -90.07153],
[30.79488, -80.19179],
[25.76168, -81.73198],
[36.85298, -75.97028],
[38.90716, -77.03691],
[40.7349, -74.0057],
[36.83468, -77.5785],
[38.90719, -75.97798],
[23.18892, -118.24368],
[34.12527, -102.55278],
[3.45165, -102.55971],
[23.64973, -76.53199],
[-50.09649, -81.22001],
[3.45165, -67.20001]]
まず時間が、それは、そのようなfitBoundsを与える開い
私の推測では、それはあるかもしれないということです遅延したAJAXの何かが間違っていますが、私は何を知りません ここにこれが生産中です: http://velomelon.com/our-route/
ありがとうございました!
が、私のために、私は知りませんどうしたの。 http://velomelon.com/our-route/にアクセスしてください。私にとっては北米のみを表示していて、どちらも表示されるべきです。 – pszafer
常にJSFiddleで動作しますので、おそらくブログの実装に問題があります。たとえば、あなたの奇妙な高さの設定かもしれません。とにかく上記の 'fullGroup.getBounds()'ソリューションを実装していないので、あなたの境界をどのように格納して取得するのでしょうか?少なくとも、境界が正しいことを確認する必要があります。 – ghybs
私はそれをしてここに戻ってきます。 – pszafer