1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>API Geoportail - votre carte personnelle</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="http://api.ign.fr/geoportail/api/js/1.3.0/theme/default/style.css" id="__OpenLayersCss__">
<link rel="stylesheet" type="text/css" href="http://api.ign.fr/geoportail/api/js/1.3.0/theme/default/google.css" id="__GoogleOpenLayersCss__">
<link rel="stylesheet" type="text/css" href="http://api.ign.fr/geoportail/api/js/1.3.0/theme/default/framedCloud.css" id="__FramedCloudOpenLayersCss__">
<link rel="stylesheet" type="text/css" href="http://api.ign.fr/geoportail/api/js/1.3.0/theme/geoportal/style.css" id="__GeoportalCss__">
<style type="text/css"><!--/*--><![CDATA[/*><!--*/
div#viewerDiv {
width:800px;
height:600px;
background-color:white;
background-image:url(http://api.ign.fr/geoportail/api/js/1.3/theme/geoportal/img/loading.gif);
background-position:center center;
background-repeat:no-repeat;
}
/*]]>*/--></style>
</head>
<body>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
window.onload = function () {
console.log("window.onload() debut");
Geoportal.load(
// div's ID:
'viewerDiv',
// API's keys:
'xxxx',
{// map's center :
lon: -1.50668055,
lat: 48.13038738,
},
//zoom
14,
{// options
layers:['ORTHOIMAGERY.ORTHOPHOTOS:WMSC', 'GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC','ADMINISTRATIVEUNITS.BOUNDARIES:WMSC'],
layersOption:{
'ORTHOIMAGERY.ORTHOPHOTOS:WMSC':{visibility:true,opacity:0.65},
'ADMINISTRATIVEUNITS.BOUNDARIES:WMSC':{visibility:true,opacity:1},
'GEOGRAPHICALGRIDSYSTEMS.MAPS:WMSC':{visibility:true,opacity:0.1}
},
overlays:{
},
onView: onView
}
);
console.log("window.onload() fin");
};
var viewer = null;
var map = null;
var empriseLayer = null;
var wkt = null;
var controlSelect = null;
var popup = null;
var numPoly = 0;
function onView() {
viewer = this.getViewer();
map = viewer.getMap();
wkt = new OpenLayers.Format.WKT();
empriseLayer = new OpenLayers.Layer.Vector("Emprise Layer");
map.addLayer(empriseLayer);
//Affichage des 9 emprises
addWkt(empriseLayer, 'POLYGON((172350 5424080,172360 5424080,172360 5424090,172350 5424090,172350 5424080))');
addWkt(empriseLayer, 'POLYGON((172350 5424100,172360 5424100,172360 5424110,172350 5424110,172350 5424100))');
addWkt(empriseLayer, 'POLYGON((172370 5424100,172380 5424100,172380 5424110,172370 5424110,172370 5424100))');
addWkt(empriseLayer, 'POLYGON((172370 5424080,172380 5424080,172380 5424090,172370 5424090,172370 5424080))');
addWkt(empriseLayer, 'POLYGON((172370 5424060,172380 5424060,172380 5424070,172370 5424070,172370 5424060))');
addWkt(empriseLayer, 'POLYGON((172350 5424060,172360 5424060,172360 5424070,172350 5424070,172350 5424060))');
addWkt(empriseLayer, 'POLYGON((172330 5424060,172340 5424060,172340 5424070,172330 5424070,172330 5424060))');
addWkt(empriseLayer, 'POLYGON((172330 5424080,172340 5424080,172340 5424090,172330 5424090,172330 5424080))');
addWkt(empriseLayer, 'POLYGON((172330 5424100,172340 5424100,172340 5424110,172330 5424110,172330 5424100))');
// Centre et zoom sur l'ensemble des poly
centerOnAllPoly();
controlSelect = new OpenLayers.Control.SelectFeature(empriseLayer,{title: "Information", onSelect: onFeatureSelect, onUnselect: onFeatureUnselect});
var panel = new Geoportal.Control.Panel({div:OpenLayers.Util.getElement('zoom')});
panel.addControls(controlSelect);
map.addControl(panel);
controlSelect.activate();
function onFeatureSelect(feature) {
console.log("onFeatureSelect");
var featureReference = empriseLayer.features[0];
var geom1 = featureReference.geometry; // comparaison distance avec la premiere emprise
var geom2 = feature.geometry;
selectedFeature = feature;
var objDist = feature.geometry.distanceTo(featureReference.geometry, {details:true});
popup = new OpenLayers.Popup.FramedCloud("popup",
feature.geometry.getBounds().getCenterLonLat(),
null,
"<div style='font-size:.8em'>" +
"<br>Name : " + feature.data +
"<br>Area : " + geom2.getArea() +
"<br>WKT " + feature.data + " : " + wkt.write(feature) +
"<br>WKT " + featureReference.data + " : " + wkt.write(featureReference) +
"<br>Distance from " + featureReference.data + " : " + objDist.distance + ' (' + objDist.x0 + ' ' + objDist.y0 + '), (' + objDist.x1 + ' ' + objDist.y1 + ')' +
"</div>",
null, true, onPopupClose);
feature.popup = popup;
map.addPopup(popup);
}
function onFeatureUnselect(feature) {
console.log("onFeatureUnselect");
map.removePopup(feature.popup);
feature.popup.destroy();
feature.popup = null;
}
function onPopupClose(evt) {
console.log("onPopupClose");
controlSelect.unselect(selectedFeature);
}
function addWkt(layer, str) {
features = wkt.read(str);
if(features.constructor != Array) {
features = [features];
}
var name=null;
for(var i=0; i<features.length; ++i) {
setPolyName(features[i]);
}
layer.addFeatures(features);
}
}
function setPolyName(feature) {
name = 'POLY ' + numPoly;
numPoly = numPoly + 1;
feature.data = name;
}
function centerOnAllPoly() {
var geometries = new OpenLayers.Geometry.Collection();
var geom;
for (x in empriseLayer.features) {
geom = empriseLayer.features[x].geometry.clone();
geometries.addComponents(geom);
}
map.setCenter(geometries.getCentroid(true).getBounds().getCenterLonLat());
map.zoomToExtent(geometries.getBounds());
}
//--><!]]></script>
<div id="viewerDiv"></div>
<script
type="text/javascript"
src="http://api.ign.fr/geoportail/api/js/1.3.0/GeoportalExtended.js">
<!-- -->
</script>
</body>
</html> |
Partager