#1 Wed 29 October 2008 21:09
- Jean marie
- Participant assidu
- Lieu: Moissy Cramayel
- Date d'inscription: 15 Feb 2007
- Messages: 309
- Site web
MapGuide (1.2 et 2.xx) et OpenLayer
bonjour à vous
je cherche désespérément à comprendre comment reverser une carto de MapGuide sous OpenLayer
je suis tombé sur plusieurs sujet qui parle de la manipulation à faire
comme http://dev.openlayers.org/releases/Open … de-js.html
ou encore http://zacster.blogspot.com/2008/04/map … d-map.html
et encore http://georezo.net/forum/viewtopic.php?pid=117113 (bonjour à Nath ;-) )
mais hélas ce n'est pas très claire pour moi
je vous laisse aussi un tutoriel (source OpenLayer )
ma question est d'avoir un petit retour d'expérience sur ce sujet et un peu plus d'éclaircissement
et un grand merci à vous
Jean-Marie
Code:
Line
1 <html xmlns="http://www.w3.org/1999/xhtml">
2 <head>
3 <style type="text/css">
4 #map {
5 width: 600px;
6 height: 600px;
7 border: 1px solid black;
8 float:left;
9 }
10 #map2 {
11 width: 600px;
12 height: 600px;
13 border: 1px solid black;
14 float:left;
15 }
16 </style>
17 <script src="http://openlayers.org/dev/lib/OpenLayers.js"></script>
18 <script type="text/javascript">
19
20 var map, map2, layer;
21 var url = "http://demo01.dmsolutions.ca/mapguide/mapagent/mapagent.fcgi";
22 //you can use this URL when MapGuide OS is installed locally
23 var url = "http://127.0.0.1:8018/mapguide/mapagent/mapagent.fcgi";
24
25 //tiled version
26 function initTiled(){
27
28 OpenLayers.DOTS_PER_INCH = 96;
29 var extent = new OpenLayers.Bounds(-87.865114442365922,43.665065564837931,-87.595394059497067,43.823852564430069);
30 var tempScales =[1000,1930.6977300000001,3727.5937199999998,7196.8567300000004,13894.95494,26826.95795,51794.746789999997,100000];
31
32 var mapOptions = {
33 maxExtent: extent,
34 scales: tempScales
35 };
36 map = new OpenLayers.Map( 'map', mapOptions );
37
38 var params = {
39 mapdefinition: 'Library://Samples/Sheboygan/MapsTiled/Sheboygan.MapDefinition',
40 basemaplayergroupname: "Base Layer Group"
41 }
42
43 var options = {
44 singleTile: false
45 }
46 var layer = new OpenLayers.Layer.MapGuide( "MapGuide OS tiled layer", url, params, options );
47 map.addLayer(layer);
48 map.addControl(new OpenLayers.Control.MousePosition());
49 map.zoomToMaxExtent();
50 }
51
52 //un-tiled version
53 function initUntiled() {
54
55 OpenLayers.DOTS_PER_INCH = 96;
56 var extent = new OpenLayers.Bounds(-87.865114442365922,43.665065564837931,-87.595394059497067,43.823852564430069);
57 var mapOptions = {
58 maxExtent: extent,
59 maxResolution: 'auto'
60 };
61 map2 = new OpenLayers.Map( 'map2', mapOptions );
62
63 var options = {
64 buffer: 1,
65 singleTile: true
66 };
67
68 var params = {
69 mapdefinition: 'Library://Samples/Sheboygan/Maps/Sheboygan.MapDefinition'
70 };
71 /*
72 The MapGuide layer can also be created using mapname and session as follows provided there
73 is some wrapper code to obtain a valid session id and mapname
74 var params = {
75 mapname: 'Sheboygan47b3560bf1071',
76 session: '043bb716-0000-1000-8000-0017a4e6ff5d_en_7F0000010AFC0AFB0AFA'
77 };
78 */
79 var layer = new OpenLayers.Layer.MapGuide( "MapGuide OS untiled baselayer", url, params, options );
80 map2.addLayer(layer);
81
82 //this is how to set up the layer for transparent overlays. Requires a valid session ID
83 //and mapName stored in that session.
84 //If the mapagent URL is on a different server than this OL layer, the OpenLayers proxy script
85 //must be used since this layer must perform an additional AJAX request before requesting the
86 //map image
87 /*
88 var options = {
89 isBaseLayer: false,
90 transparent: true,
91 buffer: 1,
92 singleTile: true
93 };
94 var params = {
95 mapName: 'Sheboygan',
96 session: '0b8cb80e-0000-1000-8003-0017a4e6ff5d_en_C0A802AD0AFC0AFB0AFA',
97 };
98 layer = new OpenLayers.Layer.MapGuide( "MapGuide OS Overlay layer", url, params, options );
99 map.addLayer(layer);
100 */
101 map2.addControl(new OpenLayers.Control.MousePosition());
102 map2.zoomToMaxExtent();
103 }
104
105
106
107 </script>
108 </head>
109 <body onload="initUntiled(); initTiled()">
110 <p>If prompted for a password, username is Anonymous and an empty password</p>
111
112 Modified example by Zac Spitzer, first map is tiled, second map is not tiled,<br>
113 note that the mouse position doesn't match between the different versions
114 <div id="map"></div>
115 <div id="map2"></div>
116
117 <br>
118
119 </body>
120 </html>Hors ligne
#2 Thu 16 April 2009 09:02
- nath73
- Participant occasionnel
- Date d'inscription: 18 Sep 2008
- Messages: 27
Re: MapGuide (1.2 et 2.xx) et OpenLayer
Bonjour,
Je lis ce message aujourd'hui (hello Jean-Marie !), j'avais mis de coté cette problématique depuis un moment, et j'y reviens maintenant. As-tu trouvé des réponses ?
Mon but était alors de remonter des couches mapguide dans l'api du géoportail. J'en suis à me poser la question, faut-il continuer dans cette voie, ou abandonner mapguide pour travailler directement avec l'api ?
Si quelqu'un a des réponses ou de l'expérience sur ces sujets, je suis preneuse.
Merci à tous
Nath
Hors ligne
#3 Thu 16 April 2009 10:28
- Jean marie
- Participant assidu
- Lieu: Moissy Cramayel
- Date d'inscription: 15 Feb 2007
- Messages: 309
- Site web
Re: MapGuide (1.2 et 2.xx) et OpenLayer
Bonjour Nath
Hélas je n'ai pas plus d'info que toi sur ce sujet et je n'ai pas avancer non plus
bonne journée
Hors ligne
#4 Thu 16 April 2009 20:59
- Gwenael Bachelot
- Participant assidu
- Lieu: Bureau Autodesk : Paris 12ème
- Date d'inscription: 5 Sep 2005
- Messages: 608
- Site web
Re: MapGuide (1.2 et 2.xx) et OpenLayer
Bonsoir,
Il y a un exemple en ligne à l'URL suivante :
http://enterprise.mapguide.com/googleopenlayers
Le code source de la page est lisible directement.
Cordialement,
Gwenael
PS : soyez patient, le serveur ne semble pas très rapide.
Dernière modification par Gwenael Bachelot (Thu 16 April 2009 21:01)
Hors ligne
#5 Thu 16 April 2009 21:20
- Jean marie
- Participant assidu
- Lieu: Moissy Cramayel
- Date d'inscription: 15 Feb 2007
- Messages: 309
- Site web
Re: MapGuide (1.2 et 2.xx) et OpenLayer
Bonsoir à vous et merci à toi Gwenael
voila le code source pris de FF3
Code:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>MapGuide and Google</title>
<style type="text/css">
body {
font: 100% Verdana, Arial, Helvetica, sans-serif;
background: #667788;
margin: 0 auto; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */
text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */
color: #000000;
}
.thrColFixHdr #container {
height:600;
width: 800;
}
.thrColFixHdr #header {
background: #CBCEF8;
height: 25px;
}
.thrColFixHdr #mainContent {
background:#8080FF;
}
.thrColFixHdr #footer {
background:#CBCEF8;
height: 25px;
}
.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */
clear:both;
height:0;
font-size: 1px;
line-height: 0px;
}
.olControlPanel div {
position: absolute;
left: 14px;
height: 16px;
width: 16px;
margin: 5px;
background-color:red;
}
.olControlPanel .olControlMouseDefaultsItemActive {
top: 120px;
background-image: url("images/pan.png");
}
.olControlPanel .olControlMouseDefaultsItemInactive {
top: 120px;
background-color: blue;
background-image: url("images/pan.png");
}
.olControlPanel .olControlZoomBoxItemInactive {
top: 140px;
background-color: blue;
background-image: url("images/zoom-in.png");
}
.olControlPanel .olControlZoomBoxItemActive {
top: 140px;
background-image: url("images/zoom-in.png");
}
.olControlPanel .olControlZoomToMaxExtentItemInactive {
top: 160px;
background-image: url("images/zoom-full.png");
}
</style>
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAtGc1Bw-KR4G0twM8p8DxvBQO_0oW9AuwWD_8dG9g505dbuw-xxT4AAmglVXFtiPQoHXpFs4DwUMClg"
type="text/javascript"></script>
<script type="text/javascript" src="http://www.openlayers.org/api/OpenLayers.js"></script>
<script type="text/javascript">
var url = "http://enterprise.mapguide.com/mapguide2010/mapagent/mapagent.fcgi";
var mapDefinition = "Library://Samples/Sheboygan/Maps/SheboyganSphericalMercator.MapDefinition";
var metersPerUnit = 1;
var inPerUnit = OpenLayers.INCHES_PER_UNIT.m * metersPerUnit;
OpenLayers.INCHES_PER_UNIT["dd"] = inPerUnit;
OpenLayers.INCHES_PER_UNIT["degrees"] = inPerUnit;
OpenLayers.DOTS_PER_INCH = 96;
function init(){
var mapBounds = new OpenLayers.Bounds(-9774168.50738698,5415995.25637308,-9754637.25738698,5434757.02491306);
var mapOptions = {
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
units: "m",
numZoomLevels: 20,
minResolution: 0.01 / metersPerUnit,
maxExtent: mapBounds
};
// Create the map in the mainContent div
map = new OpenLayers.Map( 'mainContent', mapOptions );
// Create a Google streets layer
var googleLayer = new OpenLayers.Layer.Google('Google Streets', {type : G_NORMAL_MAP, isBaseLayer: true, sphericalMercator: true});
map.addLayer(googleLayer);
// Create a Google satellite layer
var googleLayer = new OpenLayers.Layer.Google('Google Satellite', {type : G_SATELLITE_MAP, isBaseLayer: true, sphericalMercator: true});
map.addLayer(googleLayer);
// Create a Google hybrid layer
var googleLayer = new OpenLayers.Layer.Google('Google Hybrid', {type : G_HYBRID_MAP, isBaseLayer: true, sphericalMercator: true});
map.addLayer(googleLayer);
// Dynamic map params
var dynamicParams = {
session: '06d8a338-0ce9-102c-8000-0050569a3bff_en_7F0000010AFC0AFB0AFA',
mapname: 'SheboyganSphericalMercator1'
};
// Dynamic map options
var dynamicMapOptions = {
buffer: 1,
singleTile: true,
isBaseLayer : false,
visibility : true,
transitionEffect: 'resize'
};
// Create the dynamic layer
var dynamicLayer = new OpenLayers.Layer.MapGuide( "MapGuide Map",
url,
dynamicParams,
dynamicMapOptions );
map.addLayer(dynamicLayer);
map.zoomToMaxExtent();
// Set up the footer to display the mouse position
var footerDiv = document.getElementById("footer");
var mousePosition = new OpenLayers.Control.MousePosition({div: footerDiv})
map.addControl(mousePosition);
// Add a scale display to the map itself
map.addControl(new OpenLayers.Control.ScaleLine());
// Add a layer switcher to the map
var switcher=new OpenLayers.Control.LayerSwitcher();
map.addControl(switcher);
// Add some tools
var zoomBox = new OpenLayers.Control.ZoomBox(
{title:"Zoom Rectangle: Use this tool to zoom to an area by clicking and dragging."});
var mouseDefaults = new OpenLayers.Control.MouseDefaults(
{title:'Pan: Use this tool to pan around the map.'});
var zoomExtents = new OpenLayers.Control.ZoomToMaxExtent(
{title:"Zoom Extents: Zoom to the max extent of the map"}) ;
var panel = new OpenLayers.Control.Panel({defaultControl: zoomBox});
panel.addControls([mouseDefaults, zoomBox, zoomExtents]);
map.addControl(panel);
}
</script>
</head>
<body onload="init()" class="thrColFixHdr">
<div id="container" align="center">
<div id="header">Google Maps, Autodesk MapGuide Enterprise using Open Layers</div>
<div id="panel"></div>
<div id="mainContent"></div>
<!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats -->
<br class="clearfloat" />
<!--
<div id="footer">Footer</div>
</div>-->
</body>
</html>Dernière modification par Jean marie (Thu 16 April 2009 21:21)
Hors ligne
#6 Fri 17 April 2009 08:35
- nath73
- Participant occasionnel
- Date d'inscription: 18 Sep 2008
- Messages: 27
Re: MapGuide (1.2 et 2.xx) et OpenLayer
Merci de votre aide
Nath
Hors ligne
#7 Wed 31 March 2010 10:48
- sma
- Juste Inscrit !
- Date d'inscription: 26 Sep 2009
- Messages: 6
Re: MapGuide (1.2 et 2.xx) et OpenLayer
Bonjour,
J'aimerais pouvoir récupérer la carte courante et les calques affichés dans MapGuide (sans codage en dur!), mais comment faire concrètement? Ne pourrait-on pas utiliser l'id session?
En lisant les codes sources proposés par Jean-Marie au-dessus, il y a des choses intéressantes mais que je ne comprends pas...
/*
The MapGuide layer can also be created using mapname and session as follows provided there
is some wrapper code to obtain a valid session id and mapname
var params = {
mapname: 'Sheboygan47b3560bf1071',
session: '043bb716-0000-1000-8000-0017a4e6ff5d_en_7F0000010AFC0AFB0AFA'
};
=> ??? D'où sort ce numéro de session?
Merci d'avance pour votre aide!
Sébastien
Hors ligne


