banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Wed 13 October 2010 11:11

ThomasL
Participant actif
Lieu: Paris
Date d'inscription: 16 Apr 2007
Messages: 137

KML via API Gmaps

Bonjour à tous,

Je découvre l'API Gmaps, et souhaiterais l'utiliser pour afficher une carte sur un site.
Pour l'affichage de l'interface, aucun souci. Par contre, ne maitrisant pas le langage, je ne parviens pas à insérer un layer stocké en local...

Voici le code utilisé :

Code:

<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script type="text/javascript">
  function initialize() {

    var latlng = new google.maps.LatLng(43.60445,1.44333);

    var latlng2 = new google.maps.LatLng(5.1583333,-52.642778);

    var myOptions = {
      zoom: 12,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var myOptions2 = {
      zoom: 12,
      center: latlng2,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var map = new google.maps.Map(document.getElementById("map_toulouse"), myOptions);

    var map2 = new google.maps.Map(document.getElementById("map_kourou"), myOptions2);

var macouche_kml = new GGeoXml("S:\mon_chemin\macouche.kml");
map_toulouse.addOverlay(macouche_kml);
 }


</script>
</head>
<body style="margin:0px; padding:0px;" onload="initialize()">

<div id="texte" style="font-family:Tahoma"> 
<br>
Ceci est un test d'affichage de deux fenêtres Gmaps.<br>
Nous avons en plus ajouté une couche de données locale, au format XML.<br><br>
</div>

<div id="map_toulouse" style="width:40%; height:40%"></div>

<br>
<div id="map_kourou" style="width:40%; height:40%"></div>

</body>
</html>

Merci pour votre aide!

TL

Hors ligne

 

#2 Wed 13 October 2010 11:39

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9860
Site web

Re: KML via API Gmaps

Bonjour,

Je te transfert vers le forum webmapping où tu trouveras plus de gens compétent sur l'API Google Maps wink

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Wed 13 October 2010 11:55

simon_g
Participant assidu
Lieu: Paris
Date d'inscription: 4 Oct 2006
Messages: 195
Site web

Re: KML via API Gmaps

salut,

GGeoXml() prend en argument une URL (http://), pas un chemin physique.

Hors ligne

 

#4 Wed 13 October 2010 12:23

ThomasL
Participant actif
Lieu: Paris
Date d'inscription: 16 Apr 2007
Messages: 137

Re: KML via API Gmaps

Merci Yves, merci simon_g.

Je comprends mieux le problème. J'ai alors deux questions :

1. Après avoir héberger mon KML sur un site, le résultat n'affiche toujours pas mon layer, mais simplement le fond Gmpas...
Mon code comporte t-il des erreurs?

2. Est-il possible d'intégrer un kml à partir d'un chemin physique?

TL

Dernière modification par on_a_pas_un_métier_facile (Wed 13 October 2010 14:35)

Hors ligne

 

#5 Wed 13 October 2010 15:35

simon_g
Participant assidu
Lieu: Paris
Date d'inscription: 4 Oct 2006
Messages: 195
Site web

Re: KML via API Gmaps

on_a_pas_un_métier_facile a écrit:

1. Après avoir héberger mon KML sur un site, le résultat n'affiche toujours pas mon layer, mais simplement le fond Gmpas...
Mon code comporte t-il des erreurs?


Pour le savoir, tu peux le passer au validateur :http://www.kmlvalidator.com/home.htm

ou le fournir en entrée à http://maps.google.fr/maps?hl=fr&tab=wl  en spéciiant ton url dans le champ de recherche

on_a_pas_un_métier_facile a écrit:

2. Est-il possible d'intégrer un kml à partir d'un chemin physique?


Non.

"The KML file must be accessible by the Google KML rendering server.
It won't work with KML files on your local computer. You don't get any
error messages if the KML file is inaccessible."

Hors ligne

 

#6 Wed 13 October 2010 16:40

ThomasL
Participant actif
Lieu: Paris
Date d'inscription: 16 Apr 2007
Messages: 137

Re: KML via API Gmaps

Bien. Je vais travailler dans ce sens.
Je te remercie simon_g.

TL

Hors ligne

 

#7 Wed 13 October 2010 17:09

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9860
Site web

Re: KML via API Gmaps

Bonjour,

Je ne sais pas si ce que je vais dire est pertinent, ca l'est en tout cas pour OpenLayers, mais je pense que le code JavaScript qui va lire le KML et le KML doivent être sur le même serveur avec le même port.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#8 Wed 27 October 2010 12:09

ThomasL
Participant actif
Lieu: Paris
Date d'inscription: 16 Apr 2007
Messages: 137

Re: KML via API Gmaps

Bonjour,
Je n'ai toujours pas réglé mon problème, à savoir afficher un fichier kml via l'api Gmaps.

Reprenons du début :

1. J'ai commencé par convertir un fichier MIF (3 points représentant 3 villes françaises) au format KML via FWTools.
    Ainsi j'ai obtenu le fichier suivant :

Code:

<?xml version="1.0" encoding="utf-8" ?>
<ogr:FeatureCollection
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://ogr.maptools.org/villes_pt.xsd"
     xmlns:ogr="http://ogr.maptools.org/"
     xmlns:gml="http://www.opengis.net/gml">
  <gml:boundedBy>
    <gml:Box>
      <gml:coord><gml:X>-1.556056763745512</gml:X><gml:Y>43.59966544473441</gml:Y></gml:coord>
      <gml:coord><gml:X>1.448570244753995</gml:X><gml:Y>47.21825317135873</gml:Y></gml:coord>
    </gml:Box>
  </gml:boundedBy>                     
  <gml:featureMember>
    <ogr:villes_pt fid="F0">
      <ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>1.448570244753995,43.599665444734413</gml:coordinates></gml:Point></ogr:geometryProperty>
      <ogr:CODE>31555</ogr:CODE>
      <ogr:NOM>Toulouse</ogr:NOM>
      <ogr:POP90>358598.000</ogr:POP90>
      <ogr:densité>0</ogr:densité>
    </ogr:villes_pt>
  </gml:featureMember>
  <gml:featureMember>
    <ogr:villes_pt fid="F1">
      <ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>-0.57692512124582,44.842591594876197</gml:coordinates></gml:Point></ogr:geometryProperty>
      <ogr:CODE>33063</ogr:CODE>
      <ogr:NOM>Bordeaux</ogr:NOM>
      <ogr:POP90>210467.000</ogr:POP90>
      <ogr:densité>0</ogr:densité>
    </ogr:villes_pt>
  </gml:featureMember>
  <gml:featureMember>
    <ogr:villes_pt fid="F2">
      <ogr:geometryProperty><gml:Point srsName="EPSG:4326"><gml:coordinates>-1.556056763745512,47.218253171358732</gml:coordinates></gml:Point></ogr:geometryProperty>
      <ogr:CODE>44109</ogr:CODE>
      <ogr:NOM>Nantes</ogr:NOM>
      <ogr:POP90>244514.000</ogr:POP90>
      <ogr:densité>0</ogr:densité>
    </ogr:villes_pt>
  </gml:featureMember>
</ogr:FeatureCollection>

2. J'ai héberger ma page html ainsi que mon fichier kml sur un site web.

Code:

<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script type="text/javascript">
  function initialize() {

    var latlng = new google.maps.LatLng(43.60445,1.44333);

    var latlng2 = new google.maps.LatLng(5.1583333,-52.642778);

    var myOptions = {
      zoom: 12,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var myOptions2 = {
      zoom: 12,
      center: latlng2,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var map = new google.maps.Map(document.getElementById("map_toulouse"), myOptions);

    var map2 = new google.maps.Map(document.getElementById("map_kourou"), myOptions2);

var fichier_kml = new GGeoXml("http://207182.edicypages.com/files/villes_pt.kml");
map_toulouse.addOverlay(fichier_kml);
map_toulouse.enableGoogleBar();


 }


</script>
</head>
<body style="margin:0px; padding:0px;" onload="initialize()">

<div id="texte" style="font-family:Tahoma"> 
<br>
Ceci est un test d'affichage de deux fenêtres Gmaps.<br>
Nous tentons en plus d'ajouter une couche de données au format KML.<br><br>
</div>

<div id="map_toulouse" style="width:40%; height:40%"></div>

<br>
<div id="map_kourou" style="width:40%; height:40%"></div>

</body>
</html>

3. Je rentre l'url dans un navigateur, mais le kml n'apparait pas dans ma fenêtre Gmaps...

Quelqu'un voit -il une erreur dans le procédé ou le code?
Éventuellement, si vous avez un fichier kml "valable" que je pourrais essayer d'afficher dans ma fenêtre, je suis preneur.

Merci d'avance pour votre aide!

Dernière modification par ThomasL (Wed 27 October 2010 12:10)

Hors ligne

 

#9 Wed 27 October 2010 12:26

Peio
Participant assidu
Lieu: Nantes
Date d'inscription: 23 Jul 2006
Messages: 428
Site web

Re: KML via API Gmaps

Bonjour Thomas,

Avez-vous vérifié le chargement du fichier kml dans Google Earth ?
A priori non si j'en juge les balises ogr et gml contenues dans le pseudo fichier kml.
Il faut reprendre la conversion du fichier MIF en KML avant d'envisager sa visu dans Google Maps.

Bien cordialement

--
Peio Elissalde
Magic Instinct Software

Hors ligne

 

#10 Wed 27 October 2010 15:26

ThomasL
Participant actif
Lieu: Paris
Date d'inscription: 16 Apr 2007
Messages: 137

Re: KML via API Gmaps

Bonjour,

En effet, mon kml n'était pas bon. J'en ai un nouveau, vérifié sur KML VALIDATOR (je n'ai pas GoogleEarth, ma demande aux admin informatique met du temps dans mon entreprise).

Code:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Placemark>
    <name>Simple placemark</name>
    <description>Toulouse</description>
    <Point>
      <coordinates>43.60445,1.44333,0</coordinates>
    </Point>
  </Placemark>
</kml>

Toutefois, toujours aucun affichage... J'ai modifié un peu le code de ma page html pour plus de clarté.

Code:

<?xml version="1.0" encoding="utf-8"?>
    <!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" xmlns:v="urn:schemas-microsoft-com:vml" xml:lang="fr">
    <head>
        <title>Test_Thomas</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <!-- Chargement du script Google Maps, version 2.x, en précisant votre clé -->
        <script src="http://maps.google.com/maps?file=api&v=2.x&key=ABQIAAAAEBUZh3Seb_5DTwCnUyG-9xQpUR4a_9M4aOYXriPg0vrHR29ZdBS0PUsGk7YPFcXdNE5MMKs8m1k3Sw&sensor=false" type="text/javascript"></script>
        <script type="text/javascript">
        //<![CDATA[
        
    var maCarte;
        /* Fonction initialize() */
        function initialize() {
            
        /* Si le navigateur est compatible avec l'API de Google Maps ... */
            if (GBrowserIsCompatible()) {
                
            /* ... Création d'une nouvelle carte ayant pour nom "maCarte" et qui se situera en lieu et place de la <div> ayant pour identifiant id="EmplacementDeMaCarte" ... */
                maCarte = new GMap2(document.getElementById("EmplacementDeMaCarte"));
                
            /* ... La carte nommée "Macarte" est centrée sur la Latitude 43.60445, la Longitude 1.44333, avec un niveau de zoom égal à 13 ... */
                maCarte.setCenter(new GLatLng(43.60445,1.44333), 13);
                
            /* ... Ajout de l'interface utilisateur Google Maps à la carte nommée "maCarte" ... */
                maCarte.setUIToDefault();
                
             /* ... Affichage de la GoogleBar sur la carte nommée "maCarte" ... */
                maCarte.enableGoogleBar();
            
            /* ... Ajout d'une couche KML hébergée sur un site web ... */
            var fichier_kml = new GGeoKml("http://207182.edicypages.com/files/toulouse.kml");
                    maCarte.addOverlay(fichier_kml);

            /* Si le navigateur n'est pas compatible avec l'API de Google Maps ... */
            }else{
            
            /* ... affichage du message "Désolé, mais votre navigateur n'est pas compatible avec Google Maps". */
                alert('Désolé, mais votre navigateur n\'est pas compatible avec Google Maps');
            }
        }

        //]]>
        </script>
    </head>
    <!-- Au chargement de la page, la fonction initialize() est executée. A la fermeture de la page, la fonction GUnload() est exécutée -->
    <body onload="initialize()" onunload="GUnload()">
        <!-- La <div> ayant pour identifiant id="EmplacementDeMaCarte" fait 100% de largeur et 800 pixels de haut. C'est à cet endroit que va venir s'afficher la carte nommée "maCarte". -->
        <div id="EmplacementDeMaCarte" style="width: 100%; height: 800px"></div>
    </body>
    </html>

Je suis débutant donc il est possible qu'il y ait des fautes grossières... Merci de votre patience et de votre aide.

Thomas

Dernière modification par ThomasL (Wed 27 October 2010 15:28)

Hors ligne

 

#11 Wed 27 October 2010 19:38

gobbaf
Participant occasionnel
Date d'inscription: 29 Apr 2006
Messages: 16
Site web

Re: KML via API Gmaps

Bonjour,
le code est presque bon :
- il s'agit de la classe GGeoXml et non GGeoKml.
Dans ce cas, le POI s'affiche correctement mais non à Toulouse : dans un fichier KML l'ordre des coordonnées est inversé par rapport à l'API Javascript.
En dézoomant pas mal, nous le retrouvons en Somalie ...

Attention cependant, vous utilisez la version 2 de l'API qui est 'deprecaded'.
Dans la version 3 il faudra utiliser ceci : http://code.google.com/intl/fr-FR/apis/ … l#KmlLayer

Cordialement,
Fabien Goblet

Hors ligne

 

#12 Fri 29 October 2010 11:27

ThomasL
Participant actif
Lieu: Paris
Date d'inscription: 16 Apr 2007
Messages: 137

Re: KML via API Gmaps

Bonjour,

Ça y est, j'arrive à afficher mes KML!
Sur le fichier point, il y avait bien le problème GGeoXml ainsi que l'inversion des coordonnées. Je parviens également à afficher des polygones cliquables.

Toutefois, j'ai essayé de convertir un fichier MIF de MapInfo en kml via FWTools. Et il y a une erreur relativement gênante : dans les coordonnées, au lieu de noter 30.40,2.22 la conversion confond "." et ","! Du coup, je me retrouve avec 30,40,2,22 qui ne donne évidemment rien.

Je travaille maintenant dans la recherche d'un outil de conversion fiable, et qui maintiendrai également mes données attributaires de ma table extraite de MapInfo.

Cordialement,
Thomas

Hors ligne

 

#13 Fri 29 October 2010 11:56

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9860
Site web

Re: KML via API Gmaps

Bonjour,

Je pense que ogr2ogr doit utiliser la configuration du système pour le séparateur décimal sad Je n'ai pas trouvé d'option permettant de le modifier par la commande ogr2ogr.

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#14 Fri 19 November 2010 11:41

ThomasL
Participant actif
Lieu: Paris
Date d'inscription: 16 Apr 2007
Messages: 137

Re: KML via API Gmaps

Bonjour à tous,

Nouvelle question en rapport avec le titre du sujet :

J'affiche plusieurs KML via l'API. Je voulais savoir s'il y avait une limite de taille des KML à afficher?
Car j'ai 31 KML à afficher, mais lorsque je dépasse 23 (environ 46 Mo), plus rien ne s'affiche...

Merci et bonne journée.

Thomas

Hors ligne

 

Pied de page des forums

Powered by FluxBB