1 function initializeBrowse(map) {
4 var dataLayer = map.dataLayer;
21 dataLayer.isWayArea = function () {
25 dataLayer.on("click", function (e) {
29 dataLayer.on('statechange', function (e) {
32 var size = map.getBounds().getSize();
33 $('#browse_status').html(
34 $("<p class='warning'></p>")
35 .text(I18n.t("browse.start_rjs.unable_to_load_size", { max_bbox_size: OSM.MAX_REQUEST_AREA, bbox_size: size.toFixed(2) })));
37 $('#browse_status').empty();
42 map.on('layeradd', function (e) {
43 if (e.layer === dataLayer) {
44 map.on("moveend", updateData);
49 map.on('layerremove', function (e) {
50 if (e.layer === dataLayer) {
51 map.off("moveend", updateData);
52 $('#browse_status').empty();
56 function updateData() {
57 var bounds = map.getBounds();
58 if (!browseBounds || !browseBounds.contains(bounds)) {
63 function displayFeatureWarning(count, limit, callback) {
64 $('#browse_status').html(
65 $("<p class='warning'></p>")
66 .text(I18n.t("browse.start_rjs.feature_warning", { num_features: count, max_features: limit }))
68 $("<input type='submit'>")
69 .val(I18n.t('browse.start_rjs.load_data'))
76 var bounds = map.getBounds();
77 var url = "/api/" + OSM.API_VERSION + "/map?bbox=" + bounds.toBBoxString();
80 * Modern browsers are quite happy showing far more than 100 features in
81 * the data browser, so increase the limit to 2000 by default, but keep
82 * it restricted to 500 for IE8 and 100 for older IEs.
84 var maxFeatures = 2000;
87 if (navigator.appVersion < 8) {
89 } else if (navigator.appVersion < 9) {
94 if (dataLoader) dataLoader.abort();
98 success: function (xml) {
99 dataLayer.clearLayers();
100 selectedLayer = null;
102 var features = dataLayer.buildFeatures(xml);
104 function addFeatures() {
105 $('#browse_status').empty();
106 dataLayer.addData(features);
109 if (features.length < maxFeatures) {
112 displayFeatureWarning(features.length, maxFeatures, addFeatures);
116 browseBounds = bounds;
121 function onSelect(layer) {
122 // Unselect previously selected feature
124 selectedLayer.setStyle(selectedLayer.originalStyle);
127 // Redraw in selected style
128 layer.originalStyle = layer.options;
129 layer.setStyle({color: '#0000ff', weight: 8});
131 OSM.router.route('/' + layer.feature.type + '/' + layer.feature.id);
133 // Stash the currently drawn feature
134 selectedLayer = layer;