Fix rotated regionset POI issue
Correctly handle POIs on two regionsets that have different rotations, but share the same filterFunction(s)
This commit is contained in:
@@ -158,21 +158,6 @@ overviewer.util = {
|
|||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
'createMarkerInfoWindow': function(marker) {
|
|
||||||
var windowContent = '<div class="infoWindow"><img src="' + marker.icon +
|
|
||||||
'"/><p>' + marker.title.replace(/\n/g,'<br/>') + '</p></div>';
|
|
||||||
var infowindow = new google.maps.InfoWindow({
|
|
||||||
'content': windowContent
|
|
||||||
});
|
|
||||||
google.maps.event.addListener(marker, 'click', function() {
|
|
||||||
if (overviewer.collections.infoWindow) {
|
|
||||||
overviewer.collections.infoWindow.close();
|
|
||||||
}
|
|
||||||
infowindow.open(overviewer.map, marker);
|
|
||||||
overviewer.collections.infoWindow = infowindow;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This adds some methods to these classes because Javascript is stupid
|
* This adds some methods to these classes because Javascript is stupid
|
||||||
@@ -432,15 +417,15 @@ overviewer.util = {
|
|||||||
var windowContent = '<div class="infoWindow"><img src="' + marker.icon +
|
var windowContent = '<div class="infoWindow"><img src="' + marker.icon +
|
||||||
'"/><p>' + marker.title.replace(/\n/g,'<br/>') + '</p></div>';
|
'"/><p>' + marker.title.replace(/\n/g,'<br/>') + '</p></div>';
|
||||||
var infowindow = new google.maps.InfoWindow({
|
var infowindow = new google.maps.InfoWindow({
|
||||||
'content': windowContent
|
'content': windowContent
|
||||||
});
|
});
|
||||||
google.maps.event.addListener(marker, 'click', function() {
|
google.maps.event.addListener(marker, 'click', function() {
|
||||||
if (overviewer.collections.infoWindow) {
|
if (overviewer.collections.infoWindow) {
|
||||||
overviewer.collections.infoWindow.close();
|
overviewer.collections.infoWindow.close();
|
||||||
}
|
}
|
||||||
infowindow.open(overviewer.map, marker);
|
infowindow.open(overviewer.map, marker);
|
||||||
overviewer.collections.infoWindow = infowindow;
|
overviewer.collections.infoWindow = infowindow;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
'initHash': function() {
|
'initHash': function() {
|
||||||
if(window.location.hash.split("/").length > 1) {
|
if(window.location.hash.split("/").length > 1) {
|
||||||
|
|||||||
@@ -383,23 +383,28 @@ overviewer.views.SignControlView = Backbone.View.extend({
|
|||||||
// workaround IE issue. bah!
|
// workaround IE issue. bah!
|
||||||
if (typeof markers=="undefined") { return; }
|
if (typeof markers=="undefined") { return; }
|
||||||
me.render();
|
me.render();
|
||||||
// hide markers, if necessary
|
|
||||||
|
|
||||||
|
// hide markers that are part of other tilesets than this
|
||||||
// for each markerSet, check:
|
// for each markerSet, check:
|
||||||
// if the markerSet isnot part of this tileset, hide all of the markers
|
// if the markerSet isnot part of this tileset, hide all of the markers
|
||||||
var curMarkerSet = overviewer.mapView.options.currentTileSet.attributes.path;
|
var curMarkerSet = overviewer.mapView.options.currentTileSet.attributes.path;
|
||||||
var dataRoot = markers[curMarkerSet];
|
var dataRoot = markers[curMarkerSet];
|
||||||
if (!dataRoot) {
|
|
||||||
// this tileset has no signs, so hide all of them
|
|
||||||
for (markerSet in markersDB) {
|
|
||||||
if (markersDB[markerSet].created) {
|
|
||||||
jQuery.each(markersDB[markerSet].raw, function(i, elem) {
|
|
||||||
elem.markerObj.setVisible(false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
jQuery.each(markers, function(key, markerSet) {
|
||||||
}
|
if (key != curMarkerSet) {
|
||||||
|
jQuery.each(markerSet, function(i, markerGroup) {
|
||||||
|
if (typeof markerGroup.markerObjs != "undefined") {
|
||||||
|
jQuery.each(markerGroup.markerObjs, function(j, markerObj) {
|
||||||
|
markerObj.setVisible(false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
var groupsForThisTileSet = jQuery.map(dataRoot, function(elem, i) { return elem.groupName;})
|
var groupsForThisTileSet = jQuery.map(dataRoot, function(elem, i) { return elem.groupName;})
|
||||||
for (markerSet in markersDB) {
|
for (markerSet in markersDB) {
|
||||||
if (jQuery.inArray(markerSet, groupsForThisTileSet) == -1){
|
if (jQuery.inArray(markerSet, groupsForThisTileSet) == -1){
|
||||||
@@ -457,19 +462,25 @@ overviewer.views.SignControlView = Backbone.View.extend({
|
|||||||
// add some menus
|
// add some menus
|
||||||
for (i in dataRoot) {
|
for (i in dataRoot) {
|
||||||
var group = dataRoot[i];
|
var group = dataRoot[i];
|
||||||
this.addItem({label: group.displayName, groupName:group.groupName, action:function(this_item, checked) {
|
this.addItem({group: group, action:function(this_item, checked) {
|
||||||
markersDB[this_item.groupName].checked = checked;
|
this_item.group.checked = checked;
|
||||||
jQuery.each(markersDB[this_item.groupName].raw, function(i, elem) {
|
jQuery.each(this_item.group.markerObjs, function(i, markerObj) {
|
||||||
elem.markerObj.setVisible(checked);
|
markerObj.setVisible(checked);
|
||||||
});
|
});
|
||||||
}});
|
}});
|
||||||
|
if (group.checked) {
|
||||||
|
jQuery.each(group.markerObjs, function(i, markerObj) {
|
||||||
|
markerObj.setVisible(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//dataRoot['markers'] = [];
|
//dataRoot['markers'] = [];
|
||||||
//
|
//
|
||||||
for (i in dataRoot) {
|
for (i in dataRoot) {
|
||||||
var groupName = dataRoot[i].groupName;
|
var groupName = dataRoot[i].groupName;
|
||||||
if (!markersDB[groupName].created) {
|
if (!dataRoot[i].created) {
|
||||||
|
dataRoot[i].markerObjs = [];
|
||||||
for (j in markersDB[groupName].raw) {
|
for (j in markersDB[groupName].raw) {
|
||||||
var entity = markersDB[groupName].raw[j];
|
var entity = markersDB[groupName].raw[j];
|
||||||
if (entity['icon']) {
|
if (entity['icon']) {
|
||||||
@@ -492,9 +503,9 @@ overviewer.views.SignControlView = Backbone.View.extend({
|
|||||||
overviewer.util.createMarkerInfoWindow(marker);
|
overviewer.util.createMarkerInfoWindow(marker);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
jQuery.extend(entity, {markerObj: marker});
|
dataRoot[i].markerObjs.push(marker);
|
||||||
}
|
}
|
||||||
markersDB[groupName].created = true;
|
dataRoot[i].created = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -505,9 +516,13 @@ overviewer.views.SignControlView = Backbone.View.extend({
|
|||||||
var itemInput = document.createElement('input');
|
var itemInput = document.createElement('input');
|
||||||
itemInput.type='checkbox';
|
itemInput.type='checkbox';
|
||||||
|
|
||||||
|
if (item.group.checked) {
|
||||||
|
itemInput.checked="true";
|
||||||
|
}
|
||||||
|
|
||||||
// give it a name
|
// give it a name
|
||||||
$(itemInput).data('label',item.label);
|
$(itemInput).data('label',item.group.displayName);
|
||||||
$(itemInput).attr("_mc_groupname", item.groupName);
|
$(itemInput).attr("_mc_groupname", item.group.gropuName);
|
||||||
jQuery(itemInput).click((function(local_item) {
|
jQuery(itemInput).click((function(local_item) {
|
||||||
return function(e) {
|
return function(e) {
|
||||||
item.action(local_item, e.target.checked);
|
item.action(local_item, e.target.checked);
|
||||||
@@ -519,9 +534,9 @@ overviewer.views.SignControlView = Backbone.View.extend({
|
|||||||
var textNode = document.createElement('text');
|
var textNode = document.createElement('text');
|
||||||
if(item.icon) {
|
if(item.icon) {
|
||||||
textNode.innerHTML = '<img width="15" height="15" src="' +
|
textNode.innerHTML = '<img width="15" height="15" src="' +
|
||||||
item.icon + '">' + item.label + ' <br/>';
|
item.icon + '">' + item.group.displayName + ' <br/>';
|
||||||
} else {
|
} else {
|
||||||
textNode.innerHTML = item.label + ' <br/>';
|
textNode.innerHTML = item.group.displayName + ' <br/>';
|
||||||
}
|
}
|
||||||
|
|
||||||
itemDiv.appendChild(textNode);
|
itemDiv.appendChild(textNode);
|
||||||
|
|||||||
Reference in New Issue
Block a user