diff --git a/css/map.css b/css/map.css
index b2d232a0d..0306fc16d 100644
--- a/css/map.css
+++ b/css/map.css
@@ -1552,9 +1552,8 @@ text.gpx {
/* Mapillary sign Layer */
-.node {
+.layer-mapillary-signs body {
border: 1px solid green;
- //background-color: white;
}
.node body {
@@ -1565,30 +1564,27 @@ text.gpx {
pointer-events: none;
}
-.layer-mapillary-signs g {
+.layer-mapillary-signs body {
pointer-events: visible;
cursor: pointer; /* Opera */
cursor: url(img/cursor-select-mapillary.png) 6 1, pointer; /* FF */
}
-.layer-mapillary-signs g * {
- stroke-width: 2;
- stroke: red;
- fill: red;
+
+.layer-mapillary-signs body:hover * {
+ border: 1px solid red;
}
-.layer-mapillary-signs g:hover * {
- stroke-width: 2;
- stroke: red;
- fill: red;
-}
-
-.layer-mapillary-signs g.selected * {
+.layer-mapillary-signs body .selected * {
stroke-width: 4;
stroke: red;
fill: red;
}
+.layer-mapillary-signs .t {
+ position: fixed;
+}
+
/* Modes */
.mode-draw-line .vertex.active,
diff --git a/js/id/renderer/mapillary_trafficsign_layer.js b/js/id/renderer/mapillary_trafficsign_layer.js
index a6997e3da..b30417de9 100644
--- a/js/id/renderer/mapillary_trafficsign_layer.js
+++ b/js/id/renderer/mapillary_trafficsign_layer.js
@@ -1,31 +1,33 @@
iD.MapillarySignsLayer = function (context) {
var enable = false,
currentImage,
- svg, div, request;
+ svg, image_preview_div, request;
function show(image) {
- svg.selectAll('g')
+ console.log('show',image);
+ svg.selectAll('.node')
.classed('selected', function(d) {
return currentImage && d.key === currentImage.key;
});
- div.classed('hidden', false)
+ image_preview_div.classed('hidden', false)
.classed('temp', image !== currentImage);
- div.selectAll('img')
+ image_preview_div.selectAll('img')
.attr('src', 'https://d1cuyjsrcm0gby.cloudfront.net/' + image.key + '/thumb-320.jpg');
- div.selectAll('a')
+ image_preview_div.selectAll('a')
.attr('href', 'http://mapillary.com/map/im/' + image.key);
}
function hide() {
+
currentImage = undefined;
- svg.selectAll('g')
+ svg.selectAll('.node')
.classed('selected', false);
- div.classed('hidden', true);
+ image_preview_div.classed('hidden', true);
}
function transform(image) {
@@ -38,34 +40,16 @@ iD.MapillarySignsLayer = function (context) {
svg = selection.selectAll('svg')
.data([0]);
- svg.enter().append('svg')
- .on('click', function() {
- var image = d3.event.target.__data__;
- if (currentImage === image) {
- hide();
- } else {
- currentImage = image;
- show(image);
- }
- })
- .on('mouseover', function() {
- show(d3.event.target.__data__);
- })
- .on('mouseout', function() {
- if (currentImage) {
- show(currentImage);
- } else {
- hide();
- }
- });
+ svg.enter().append('svg');
+
svg.style('display', enable ? 'block' : 'none');
- div = context.container().selectAll('.mapillary-signs')
+ image_preview_div = context.container().selectAll('.mapillary-image')
.data([0]);
- var enter = div.enter().append('div')
- .attr('class', 'mapillary-signs');
+ var enter = image_preview_div.enter().append('div')
+ .attr('class', 'mapillary-image');
enter.append('button')
.on('click', hide)
@@ -87,15 +71,19 @@ iD.MapillarySignsLayer = function (context) {
if (!enable) {
hide();
- svg.selectAll('g')
+ svg.selectAll('.node')
.remove();
return;
}
// Update existing images while waiting for new ones to load.
- svg.selectAll('g')
- .attr('transform', transform);
+ //svg.selectAll('.node')
+ // .attr('transform', transform);
+ //
+
+ svg.selectAll('.node')
+ .remove();
var extent = context.map().extent();
@@ -124,22 +112,60 @@ iD.MapillarySignsLayer = function (context) {
if (images.length >= 1000) break;
}
- var g = svg.selectAll('foreignObject')
- .data(images, function(d) { return d.key; });
+ var foreignObjects = svg.selectAll('foreignObject')
+ .data(images, function(d) {
+ console.log(d);
+ return d.key;
+ });
- var enter = g.enter();
+ var enter = foreignObjects.enter();
var body = enter.append('foreignObject')
.attr('x', '0')
.attr('y', '0')
.attr('class', 'node')
- .attr('width', '20')
- .attr('height', '20')
+ .attr('width', '15')
+ .attr('height', '15')
.append('xhtml:body')
- .html('');
- g.attr('transform', transform);
+ .html(function(d) {
+ return '';
+ });
+ foreignObjects.on('click', function(data) {
+ if(!data) {
+ d3.event.preventDefault();
+ return;
+ }
+ var image = data;
+ console.log(image);
+ if (currentImage === image) {
+ hide();
+ } else {
+ currentImage = image;
+ show(image);
+ }
+ })
+ .on('mouseover', function(data) {
+ if(!data) {
+ d3.event.preventDefault();
+ return;
+ }
+ show(data);
+ })
+ .on('mouseout', function() {
+ if(!data) {
+ d3.event.preventDefault();
+ return;
+ }
+ if (currentImage) {
+ show(currentImage);
+ } else {
+ hide();
+ }
+ });
- g.exit()
+ foreignObjects.attr('transform', transform);
+
+ foreignObjects.exit()
.remove();
console.log(images);
});