Annonce
Pages: 1
- Sujet précédent - Google Earth API - Objets 3D (kmz) et affichage distincts - Sujet suivant
#1 jeu 05 mars 2009 13:46
- Atelier3DCité
- Membre
- Lieu: La Chapelle Basse Mer
- Date d'inscription: 15 jui 2008
- Messages: 6
Google Earth API - Objets 3D (kmz) et affichage distincts
Bonjour,
à toutes et à tous, et d'abord merci pour votre site que je parcours
depuis quelque temps sans y avoir encore participé. Je ne suis pas
directement de la partie "géomatique". Mon activité concerne plus la
modélisation 3D se référant à l'architecture et à l'urbanisme mais le
développement de la géomatique en général me passionne. Ce site
professionnel m'a ouvert d'autres horizons qui rejoignent fortement
ceux sur lesquels je travaille actuellement.
J'étudie en ce
moment les nouvelles applications possibles avec google earth,
l'intégration des données 3D d'architecture et d'urbanisme, et plus
récemment la mise en place de l'API Google dans les pages web.
Plus
concrétement, j'essaie à ce jour de créer une page web avec l'API
Google incluant deux boutons permettant de rendre visible ou invisible
un objet 3D, tout en conservant un autre objet 3D visible....
Extrait résumé de la page en cours qui donnera ceci à l'ouverture :
(j'ai supprimé toutes les mises en page et déco css...)
vue à l'initialisation de la page (sans l'objet "projet")
avec la déclaration de la clé (à obtenir auprès de Google) :
Code:
<script src="http://www.google.com/jsapi?key=ABQIxxxxxxxxxxxxxxxx"></script>
la déclaration de la carte :
Code:
<script type="text/javascript">
google.load("earth", "1");
var ge;
function onLoad() {
google.earth.createInstance("map3d", initCB, failureCB);
}l'initialisation des différents layers (terrain, routes, bâtiments3D initiaux, limites, contrôles de navigation...etc) :
Code:
function initCB(object) {
ge = object;
ge.getWindow().setVisibility(true);
ge.getOptions().setMouseNavigationEnabled(true);
var layerRoot = ge.getLayerRoot();
layerRoot.enableLayerById(ge.LAYER_TERRAIN, true);
layerRoot.enableLayerById(ge.LAYER_ROADS, false);
layerRoot.enableLayerById(ge.LAYER_BUILDINGS, false);
layerRoot.enableLayerById(ge.LAYER_BORDERS, true);
ge.getOptions().setFlyToSpeed(.50);
ge.getNavigationControl().setVisibility(ge.VISIBILITY_HIDE);
ge.getOptions().setStatusBarVisibility(false);
ge.getOptions().setOverviewMapVisibility(false);
ge.getOptions().setScaleLegendVisibility(false);
ge.getOptions().setGridVisibility(false);le positionnement de la vue sur le site par :
Code:
var la = ge.createLookAt('');
la.set(47.272237,-1.338813, 0, ge.ALTITUDE_RELATIVE_TO_GROUND,
-90, 30, 250); //180, 60, 500);
ge.getView().setAbstractView(la);ce peut être aussi par "Camera"
l'activation du fichier kmz du bâti conservé :
Code:
function finished(object)
{
if (!object) {
alert('KML mal formé');
return;
}
ge.getFeatures().appendChild(object);
}
var kmlCons = 'http://3dcite.fr/google_earth/kmz/projbourg01/BourgCons.kmz';
google.earth.fetchKml(ge, kmlCons, finished);et ensuite ce qui m'intéresse, la fonction pour le bouton "voir le projet" :
Code:
function addKmlProj() {
var urlProj = "http://3dcite.fr/google_earth/kmz/projbourg01/BourgProj.kmz";
google.earth.fetchKml(ge, urlProj, function(kmlObject) {
ge.getFeatures().appendChild(kmlObject);
});
}lié au bouton :
Code:
<input type="button" value="Voir projet" onclick="addKmlProj();"/>
celui-ci fonctionne correctement et fait apparaitre l'objet "projet"
Et là je cale pour le second bouton
<input type="button" value="Effacer projet" onclick="supKmlProj();"/>
auquel je souhaiterais affecter la fonction :
Code:
function supKmlProj() {
var ??????????????????????????????
google.earth.fetchKml(ge, urlProj, function(kmlObject) {
ge.getFeatures().removeChild(kmlObject);
????????????????????????????????
});
}ou quelquechose qui y ressemblerait...
pour faire disparaitre l'objet "projet". !
La page donne ceci à ce jour :
page en cours
Je fouille sur les pages de googles Earth API (reference, Examples, interactive sampler...)
Google Earth API
j'ai bien avancé avec l'indispensable Geotribu de Fabien
Geotribu - Google Earth
Mais là je cale. ![]()
Si quelqu'un avait une petite idée pour ce bout de code javascript
Merci à l'avance
Dernière modification par Atelier3DCité (jeu 05 mars 2009 13:54)
Bruno Redureau
Hors ligne
#2 ven 29 mai 2009 09:44
Re: Google Earth API - Objets 3D (kmz) et affichage distincts
Bonjour,
je tente aussi d'afficher un kml dans une page web, j'ai trouvé ceci qui semble très performant :
http://earth-api-samples.googlecode.com … index.html
mais je ne comprends rien à ce code..
Comment l'adapter à mon cas, lorsque je copie-colle cela ne fonctionne pas.
merci de votre aide
Hors ligne
#3 mer 03 juin 2009 09:27
- Atelier3DCité
- Membre
- Lieu: La Chapelle Basse Mer
- Date d'inscription: 15 jui 2008
- Messages: 6
Re: Google Earth API - Objets 3D (kmz) et affichage distincts
Bonjour smilles !
je ne comprends pas trop bien vos questions quand vous dites :
"je tente aussi d'afficher un kml dans une page web" ...qu'entendez-vous par là ?
L'affichage d'un objet kml se fait simplement par quelques lignes de code que vous trouvez dans ce sujet juste au dessus.
Ma
question était alors de pouvoir afficher ou effacer un objet par un
simple bouton dans une page web. Me manque l'expérience du code en
javascript .....
L'exemple de Google que vous mettez en lien aborde
le "framework Dojo" qui permet de retrouver l'arborescence de
GoogleEarth, mais ce type d'interface rebute souvent le grand public et
c'est pourquoi je cherche à simplifier mes pages avec par exemple
l'affichage possible ou non d'un ou de plusieurs objets par de simples
boutons... C'est toujours compliqué de faire simple ![]()
Sinon quand vous dites "Comment l'adapter à mon cas, lorsque je copie-colle cela ne fonctionne pas.",
quel est votre cas ? Parlez-vous de la page exemple de l'API google,
d'une page personnelle ? On ne pourra vous aider (dans la mesure des
possibilités de chacun) que si votre question est précise. Avez-vous
regarder du coté de GéoTribu site trés didactique, très explicite et
facile pour une approche du code javascript dans Google Earth :
http://geotribu.net/node/23
On
ne peut pas faire de copier/coller sans quelques notions de
programmation. Personnellement j'y vais doucement avec des cas concrets.
Bien cordialement
Bruno Redureau
Hors ligne
#4 mer 03 juin 2009 10:06
Re: Google Earth API - Objets 3D (kmz) et affichage distincts
bonjour et merci de votre réponse. Je vais essayer de détailler
je
tente de faire afficher un fichier kml ou kmz directement avec l'API
google earth. J'y suis arrivé depuis en copiant les quelques lignes de
code que vous citez. voir éventuellement le résultat dans mon site : http://serge.milles.free.fr
Mais
je voulais ajouter le framework dojo dont vous parlez pour donner la
possibilité de lire l'arborescence du kml / kmz et de sélectionner les
éléments à afficher ou non. J'ai tenté un copier-coller du code de la
page citée vers une page de mon site (en adpatant la ligne de l'API
google earth) mais cela ne fonctionne pas et je ne trouve pas pourquoi.
J'ia trouvé le site geotribu et j'y lis pas mal de choses mais j'avance lentement, j'ai aussi mon boulot de prof en parallèle !
merci de m'avoir consacré du temps.
Hors ligne
Pages: 1
- Sujet précédent - Google Earth API - Objets 3D (kmz) et affichage distincts - Sujet suivant
