mirror of
https://github.com/FoggedLens/iD.git
synced 2026-05-19 06:58:32 +02:00
@@ -256,7 +256,7 @@ export function rendererBackground(context) {
|
||||
mapillary: 'Mapillary Images',
|
||||
'mapillary-map-features': 'Mapillary Map Features',
|
||||
'mapillary-signs': 'Mapillary Signs',
|
||||
openstreetcam: 'OpenStreetCam Images'
|
||||
kartaview: 'KartaView Images'
|
||||
};
|
||||
|
||||
for (let layerID in photoOverlayLayers) {
|
||||
|
||||
@@ -7,7 +7,7 @@ import { utilQsString, utilStringQs } from '../util';
|
||||
|
||||
export function rendererPhotos(context) {
|
||||
var dispatch = d3_dispatch('change');
|
||||
var _layerIDs = ['streetside', 'mapillary', 'mapillary-map-features', 'mapillary-signs', 'openstreetcam'];
|
||||
var _layerIDs = ['streetside', 'mapillary', 'mapillary-map-features', 'mapillary-signs', 'kartaview'];
|
||||
var _allPhotoTypes = ['flat', 'panoramic'];
|
||||
var _shownPhotoTypes = _allPhotoTypes.slice(); // shallow copy
|
||||
var _dateFilters = ['fromDate', 'toDate'];
|
||||
@@ -119,16 +119,16 @@ export function rendererPhotos(context) {
|
||||
}
|
||||
|
||||
photos.shouldFilterByDate = function() {
|
||||
return showsLayer('mapillary') || showsLayer('openstreetcam') || showsLayer('streetside');
|
||||
return showsLayer('mapillary') || showsLayer('kartaview') || showsLayer('streetside');
|
||||
};
|
||||
|
||||
photos.shouldFilterByPhotoType = function() {
|
||||
return showsLayer('mapillary') ||
|
||||
(showsLayer('streetside') && showsLayer('openstreetcam'));
|
||||
(showsLayer('streetside') && showsLayer('kartaview'));
|
||||
};
|
||||
|
||||
photos.shouldFilterByUsername = function() {
|
||||
return !showsLayer('mapillary') && showsLayer('openstreetcam') && !showsLayer('streetside');
|
||||
return !showsLayer('mapillary') && showsLayer('kartaview') && !showsLayer('streetside');
|
||||
};
|
||||
|
||||
photos.showsPhotoType = function(val) {
|
||||
@@ -180,22 +180,22 @@ export function rendererPhotos(context) {
|
||||
this.setUsernameFilter(hash.photo_username, false);
|
||||
}
|
||||
if (hash.photo_overlay) {
|
||||
// support enabling photo layers by default via a URL parameter, e.g. `photo_overlay=openstreetcam;mapillary;streetside`
|
||||
|
||||
// support enabling photo layers by default via a URL parameter, e.g. `photo_overlay=kartaview;mapillary;streetside`
|
||||
var hashOverlayIDs = hash.photo_overlay.replace(/;/g, ',').split(',');
|
||||
hashOverlayIDs.forEach(function(id) {
|
||||
if (id === 'openstreetcam') id = 'kartaview'; // legacy alias
|
||||
var layer = _layerIDs.indexOf(id) !== -1 && context.layers().layer(id);
|
||||
if (layer && !layer.enabled()) layer.enabled(true);
|
||||
});
|
||||
}
|
||||
if (hash.photo) {
|
||||
// support opening a photo via a URL parameter, e.g. `photo=mapillary-fztgSDtLpa08ohPZFZjeRQ`
|
||||
|
||||
var photoIds = hash.photo.replace(/;/g, ',').split(',');
|
||||
var photoId = photoIds.length && photoIds[0].trim();
|
||||
var results = /(.*)\/(.*)/g.exec(photoId);
|
||||
if (results && results.length >= 3) {
|
||||
var serviceId = results[1];
|
||||
if (serviceId === 'openstreetcam') serviceId = 'kartaview'; // legacy alias
|
||||
var photoKey = results[2];
|
||||
var service = services[serviceId];
|
||||
if (service && service.ensureViewerLoaded) {
|
||||
|
||||
@@ -5,7 +5,7 @@ import serviceMapillary from './mapillary';
|
||||
import serviceMapRules from './maprules';
|
||||
import serviceNominatim from './nominatim';
|
||||
import serviceNsi from './nsi';
|
||||
import serviceOpenstreetcam from './openstreetcam';
|
||||
import serviceKartaview from './kartaview';
|
||||
import serviceOsm from './osm';
|
||||
import serviceOsmWikibase from './osm_wikibase';
|
||||
import serviceStreetside from './streetside';
|
||||
@@ -22,7 +22,7 @@ export let services = {
|
||||
osmose: serviceOsmose,
|
||||
mapillary: serviceMapillary,
|
||||
nsi: serviceNsi,
|
||||
openstreetcam: serviceOpenstreetcam,
|
||||
kartaview: serviceKartaview,
|
||||
osm: serviceOsm,
|
||||
osmWikibase: serviceOsmWikibase,
|
||||
maprules: serviceMapRules,
|
||||
@@ -41,7 +41,7 @@ export {
|
||||
serviceMapRules,
|
||||
serviceNominatim,
|
||||
serviceNsi,
|
||||
serviceOpenstreetcam,
|
||||
serviceKartaview,
|
||||
serviceOsm,
|
||||
serviceOsmWikibase,
|
||||
serviceStreetside,
|
||||
|
||||
@@ -9,7 +9,7 @@ import { geoExtent, geoScaleToZoom } from '../geo';
|
||||
import { utilArrayUnion, utilQsString, utilRebind, utilSetTransform, utilStringQs, utilTiler } from '../util';
|
||||
|
||||
|
||||
var apibase = 'https://openstreetcam.org';
|
||||
var apibase = 'https://kartaview.org';
|
||||
var maxResults = 1000;
|
||||
var tileZoom = 14;
|
||||
var tiler = utilTiler().zoomExtent([tileZoom, tileZoom]).skipNullIsland(true);
|
||||
@@ -250,15 +250,15 @@ export default {
|
||||
|
||||
if (_loadViewerPromise) return _loadViewerPromise;
|
||||
|
||||
// add osc-wrapper
|
||||
var wrap = context.container().select('.photoviewer').selectAll('.osc-wrapper')
|
||||
// add kartaview-wrapper
|
||||
var wrap = context.container().select('.photoviewer').selectAll('.kartaview-wrapper')
|
||||
.data([0]);
|
||||
|
||||
var that = this;
|
||||
|
||||
var wrapEnter = wrap.enter()
|
||||
.append('div')
|
||||
.attr('class', 'photo-wrapper osc-wrapper')
|
||||
.attr('class', 'photo-wrapper kartaview-wrapper')
|
||||
.classed('hide', true)
|
||||
.call(imgZoom.on('zoom', zoomPan))
|
||||
.on('dblclick.zoom', null);
|
||||
@@ -295,11 +295,11 @@ export default {
|
||||
|
||||
wrapEnter
|
||||
.append('div')
|
||||
.attr('class', 'osc-image-wrap');
|
||||
.attr('class', 'kartaview-image-wrap');
|
||||
|
||||
|
||||
// Register viewer resize handler
|
||||
context.ui().photoviewer.on('resize.openstreetcam', function(dimensions) {
|
||||
context.ui().photoviewer.on('resize.kartaview', function(dimensions) {
|
||||
imgZoom = d3_zoom()
|
||||
.extent([[0, 0], dimensions])
|
||||
.translateExtent([[0, 0], dimensions])
|
||||
@@ -310,7 +310,7 @@ export default {
|
||||
|
||||
function zoomPan(d3_event) {
|
||||
var t = d3_event.transform;
|
||||
context.container().select('.photoviewer .osc-image-wrap')
|
||||
context.container().select('.photoviewer .kartaview-image-wrap')
|
||||
.call(utilSetTransform, t.x, t.y, t.k);
|
||||
}
|
||||
|
||||
@@ -329,14 +329,14 @@ export default {
|
||||
if (r < -180) r += 360;
|
||||
sequence.rotation = r;
|
||||
|
||||
var wrap = context.container().select('.photoviewer .osc-wrapper');
|
||||
var wrap = context.container().select('.photoviewer .kartaview-wrapper');
|
||||
|
||||
wrap
|
||||
.transition()
|
||||
.duration(100)
|
||||
.call(imgZoom.transform, d3_zoomIdentity);
|
||||
|
||||
wrap.selectAll('.osc-image')
|
||||
wrap.selectAll('.kartaview-image')
|
||||
.transition()
|
||||
.duration(100)
|
||||
.style('transform', 'rotate(' + r + 'deg)');
|
||||
@@ -372,15 +372,15 @@ export default {
|
||||
var viewer = context.container().select('.photoviewer')
|
||||
.classed('hide', false);
|
||||
|
||||
var isHidden = viewer.selectAll('.photo-wrapper.osc-wrapper.hide').size();
|
||||
var isHidden = viewer.selectAll('.photo-wrapper.kartaview-wrapper.hide').size();
|
||||
|
||||
if (isHidden) {
|
||||
viewer
|
||||
.selectAll('.photo-wrapper:not(.osc-wrapper)')
|
||||
.selectAll('.photo-wrapper:not(.kartaview-wrapper)')
|
||||
.classed('hide', true);
|
||||
|
||||
viewer
|
||||
.selectAll('.photo-wrapper.osc-wrapper')
|
||||
.selectAll('.photo-wrapper.kartaview-wrapper')
|
||||
.classed('hide', false);
|
||||
}
|
||||
|
||||
@@ -426,8 +426,8 @@ export default {
|
||||
|
||||
if (!d) return this;
|
||||
|
||||
var wrap = context.container().select('.photoviewer .osc-wrapper');
|
||||
var imageWrap = wrap.selectAll('.osc-image-wrap');
|
||||
var wrap = context.container().select('.photoviewer .kartaview-wrapper');
|
||||
var imageWrap = wrap.selectAll('.kartaview-image-wrap');
|
||||
var attribution = wrap.selectAll('.photo-attribution').html('');
|
||||
|
||||
wrap
|
||||
@@ -436,7 +436,7 @@ export default {
|
||||
.call(imgZoom.transform, d3_zoomIdentity);
|
||||
|
||||
imageWrap
|
||||
.selectAll('.osc-image')
|
||||
.selectAll('.kartaview-image')
|
||||
.remove();
|
||||
|
||||
if (d) {
|
||||
@@ -445,7 +445,7 @@ export default {
|
||||
|
||||
imageWrap
|
||||
.append('img')
|
||||
.attr('class', 'osc-image')
|
||||
.attr('class', 'kartaview-image')
|
||||
.attr('src', apibase + '/' + d.imagePath)
|
||||
.style('transform', 'rotate(' + r + 'deg)');
|
||||
|
||||
@@ -454,7 +454,7 @@ export default {
|
||||
.append('a')
|
||||
.attr('class', 'captured_by')
|
||||
.attr('target', '_blank')
|
||||
.attr('href', 'https://openstreetcam.org/user/' + encodeURIComponent(d.captured_by))
|
||||
.attr('href', 'https://kartaview.org/user/' + encodeURIComponent(d.captured_by))
|
||||
.html('@' + d.captured_by);
|
||||
|
||||
attribution
|
||||
@@ -477,8 +477,8 @@ export default {
|
||||
.append('a')
|
||||
.attr('class', 'image-link')
|
||||
.attr('target', '_blank')
|
||||
.attr('href', 'https://openstreetcam.org/details/' + d.sequence_id + '/' + d.sequence_index)
|
||||
.html('openstreetcam.org');
|
||||
.attr('href', 'https://kartaview.org/details/' + d.sequence_id + '/' + d.sequence_index)
|
||||
.html('kartaview.org');
|
||||
}
|
||||
|
||||
return this;
|
||||
@@ -534,17 +534,17 @@ export default {
|
||||
// highlight sibling viewfields on either the selected or the hovered sequences
|
||||
var highlightedImageKeys = utilArrayUnion(hoveredImageKeys, selectedImageKeys);
|
||||
|
||||
context.container().selectAll('.layer-openstreetcam .viewfield-group')
|
||||
context.container().selectAll('.layer-kartaview .viewfield-group')
|
||||
.classed('highlighted', function(d) { return highlightedImageKeys.indexOf(d.key) !== -1; })
|
||||
.classed('hovered', function(d) { return d.key === hoveredImageKey; })
|
||||
.classed('currentView', function(d) { return d.key === selectedImageKey; });
|
||||
|
||||
context.container().selectAll('.layer-openstreetcam .sequence')
|
||||
context.container().selectAll('.layer-kartaview .sequence')
|
||||
.classed('highlighted', function(d) { return d.properties.key === hoveredSequenceKey; })
|
||||
.classed('currentView', function(d) { return d.properties.key === selectedSequenceKey; });
|
||||
|
||||
// update viewfields if needed
|
||||
context.container().selectAll('.layer-openstreetcam .viewfield-group .viewfield')
|
||||
context.container().selectAll('.layer-kartaview .viewfield-group .viewfield')
|
||||
.attr('d', viewfieldPath);
|
||||
|
||||
function viewfieldPath() {
|
||||
@@ -564,7 +564,7 @@ export default {
|
||||
if (!window.mocha) {
|
||||
var hash = utilStringQs(window.location.hash);
|
||||
if (imageKey) {
|
||||
hash.photo = 'openstreetcam/' + imageKey;
|
||||
hash.photo = 'kartaview/' + imageKey;
|
||||
} else {
|
||||
delete hash.photo;
|
||||
}
|
||||
@@ -13,7 +13,7 @@ export { svgMapillarySigns } from './mapillary_signs.js';
|
||||
export { svgMidpoints } from './midpoints.js';
|
||||
export { svgNotes } from './notes.js';
|
||||
export { svgMarkerSegments } from './helpers.js';
|
||||
export { svgOpenstreetcamImages } from './openstreetcam_images.js';
|
||||
export { svgKartaviewImages } from './kartaview_images.js';
|
||||
export { svgOsm } from './osm.js';
|
||||
export { svgPassiveVertex } from './helpers.js';
|
||||
export { svgPath } from './helpers.js';
|
||||
|
||||
@@ -4,31 +4,31 @@ import { svgPath, svgPointTransform } from './helpers';
|
||||
import { services } from '../services';
|
||||
|
||||
|
||||
export function svgOpenstreetcamImages(projection, context, dispatch) {
|
||||
export function svgKartaviewImages(projection, context, dispatch) {
|
||||
var throttledRedraw = _throttle(function () { dispatch.call('change'); }, 1000);
|
||||
var minZoom = 12;
|
||||
var minMarkerZoom = 16;
|
||||
var minViewfieldZoom = 18;
|
||||
var layer = d3_select(null);
|
||||
var _openstreetcam;
|
||||
var _kartaview;
|
||||
|
||||
|
||||
function init() {
|
||||
if (svgOpenstreetcamImages.initialized) return; // run once
|
||||
svgOpenstreetcamImages.enabled = false;
|
||||
svgOpenstreetcamImages.initialized = true;
|
||||
if (svgKartaviewImages.initialized) return; // run once
|
||||
svgKartaviewImages.enabled = false;
|
||||
svgKartaviewImages.initialized = true;
|
||||
}
|
||||
|
||||
|
||||
function getService() {
|
||||
if (services.openstreetcam && !_openstreetcam) {
|
||||
_openstreetcam = services.openstreetcam;
|
||||
_openstreetcam.event.on('loadedImages', throttledRedraw);
|
||||
} else if (!services.openstreetcam && _openstreetcam) {
|
||||
_openstreetcam = null;
|
||||
if (services.kartaview && !_kartaview) {
|
||||
_kartaview = services.kartaview;
|
||||
_kartaview.event.on('loadedImages', throttledRedraw);
|
||||
} else if (!services.kartaview && _kartaview) {
|
||||
_kartaview = null;
|
||||
}
|
||||
|
||||
return _openstreetcam;
|
||||
return _kartaview;
|
||||
}
|
||||
|
||||
|
||||
@@ -245,10 +245,10 @@ export function svgOpenstreetcamImages(projection, context, dispatch) {
|
||||
|
||||
|
||||
function drawImages(selection) {
|
||||
var enabled = svgOpenstreetcamImages.enabled,
|
||||
var enabled = svgKartaviewImages.enabled,
|
||||
service = getService();
|
||||
|
||||
layer = selection.selectAll('.layer-openstreetcam')
|
||||
layer = selection.selectAll('.layer-kartaview')
|
||||
.data(service ? [0] : []);
|
||||
|
||||
layer.exit()
|
||||
@@ -256,7 +256,7 @@ export function svgOpenstreetcamImages(projection, context, dispatch) {
|
||||
|
||||
var layerEnter = layer.enter()
|
||||
.append('g')
|
||||
.attr('class', 'layer-openstreetcam')
|
||||
.attr('class', 'layer-kartaview')
|
||||
.style('display', enabled ? 'block' : 'none');
|
||||
|
||||
layerEnter
|
||||
@@ -283,14 +283,14 @@ export function svgOpenstreetcamImages(projection, context, dispatch) {
|
||||
|
||||
|
||||
drawImages.enabled = function(_) {
|
||||
if (!arguments.length) return svgOpenstreetcamImages.enabled;
|
||||
svgOpenstreetcamImages.enabled = _;
|
||||
if (svgOpenstreetcamImages.enabled) {
|
||||
if (!arguments.length) return svgKartaviewImages.enabled;
|
||||
svgKartaviewImages.enabled = _;
|
||||
if (svgKartaviewImages.enabled) {
|
||||
showLayer();
|
||||
context.photos().on('change.openstreetcam_images', update);
|
||||
context.photos().on('change.kartaview_images', update);
|
||||
} else {
|
||||
hideLayer();
|
||||
context.photos().on('change.openstreetcam_images', null);
|
||||
context.photos().on('change.kartaview_images', null);
|
||||
}
|
||||
dispatch.call('change');
|
||||
return this;
|
||||
@@ -12,7 +12,7 @@ import { svgMapillaryImages } from './mapillary_images';
|
||||
import { svgMapillaryPosition } from './mapillary_position';
|
||||
import { svgMapillarySigns } from './mapillary_signs';
|
||||
import { svgMapillaryMapFeatures } from './mapillary_map_features';
|
||||
import { svgOpenstreetcamImages } from './openstreetcam_images';
|
||||
import { svgKartaviewImages } from './kartaview_images';
|
||||
import { svgOsm } from './osm';
|
||||
import { svgNotes } from './notes';
|
||||
import { svgTouch } from './touch';
|
||||
@@ -35,7 +35,7 @@ export function svgLayers(projection, context) {
|
||||
{ id: 'mapillary-position', layer: svgMapillaryPosition(projection, context, dispatch) },
|
||||
{ id: 'mapillary-map-features', layer: svgMapillaryMapFeatures(projection, context, dispatch) },
|
||||
{ id: 'mapillary-signs', layer: svgMapillarySigns(projection, context, dispatch) },
|
||||
{ id: 'openstreetcam', layer: svgOpenstreetcamImages(projection, context, dispatch) },
|
||||
{ id: 'kartaview', layer: svgKartaviewImages(projection, context, dispatch) },
|
||||
{ id: 'debug', layer: svgDebug(projection, context, dispatch) },
|
||||
{ id: 'geolocate', layer: svgGeolocate(projection, context, dispatch) },
|
||||
{ id: 'touch', layer: svgTouch(projection, context, dispatch) }
|
||||
|
||||
@@ -21,7 +21,7 @@ export function uiPhotoviewer(context) {
|
||||
.on('click', function () {
|
||||
if (services.streetside) { services.streetside.hideViewer(context); }
|
||||
if (services.mapillary) { services.mapillary.hideViewer(context); }
|
||||
if (services.openstreetcam) { services.openstreetcam.hideViewer(context); }
|
||||
if (services.kartaview) { services.kartaview.hideViewer(context); }
|
||||
})
|
||||
.append('div')
|
||||
.call(svgIcon('#iD-icon-close'));
|
||||
|
||||
@@ -73,7 +73,7 @@ export function uiSectionPhotoOverlays(context) {
|
||||
var titleID;
|
||||
if (d.id === 'mapillary-signs') titleID = 'mapillary.signs.tooltip';
|
||||
else if (d.id === 'mapillary') titleID = 'mapillary_images.tooltip';
|
||||
else if (d.id === 'openstreetcam') titleID = 'openstreetcam_images.tooltip';
|
||||
else if (d.id === 'kartaview') titleID = 'kartaview_images.tooltip';
|
||||
else titleID = d.id.replace(/-/g, '_') + '.tooltip';
|
||||
d3_select(this)
|
||||
.call(uiTooltip()
|
||||
|
||||
Reference in New Issue
Block a user