2010-08-19 7 views
0

J'ai quelques données MultiPolygon (l'état américain de Californie) que j'essaie d'afficher sur une carte Google Map (API JavaScript v3).Comment puis-je afficher ce polygone sur une carte Google?

Le lien vers le data is here on CodePaste.NET. (Note: je l'ai collé là parce que les données spammeraient ce post).

J'ai donc essayé de le convertir en données JSON ... puis d'afficher MultiPolygon sur google map. Il se bloque/ne fonctionne pas :(

Voici le jQuery que je l'ai utilisé ...

function getTestData() { 
    // Grab the California state data. 
    var request = $.getJSON("/Foo/Bar?format=json", function (results) { 
      // map it. 
      var polygon = createGeoJsonPolygon(results, "#FF7800", "#46461F"); 
      polygon.setMap(map); 
    }); 
} 

function createGeoJsonPolygon(geojson, strokeColour, fillColour) { 
    var coords = geojson.coordinates; // Array of polygons. 
    var paths = []; 

    $.each(coords, function (i, n) { 
     $.each(n, function (j, o) { 
      var path = []; 
      $.each(o, function (k, p) { 
       var ll = new google.maps.LatLng(p[1], p[0]); 
       path.push(ll); 
      }); 
      paths.push(path); 
     }); 
    }); 

    return new google.maps.Polygon({ 
     paths: paths, 
     strokeColor: strokeColour, 
     strokeOpacity: 1, 
     strokeWeight: 2, 
     fillColor: fillColour, 
     fillOpacity: 0.25 
    }); 
} 

Quelqu'un peut-il aider? Quelqu'un at-il une seconde pour donner un aller et voir si elles peuvent tirer mon ? exemples de données sur une carte Google Je ne sais pas si mon code est incorrect ou les données comme cela a été extrait de manière incorrecte

Répondre

1

My post on Google Groups est venu pour aider à sauver la journée.

Voici ce qui a été suggéré:

function createGeoJsonPolygon(geojson, strokeColour, fillColour) { 
    var coords = geojson.coordinates; // Array of polygons. 
    var paths = []; 

    $.each(coords, function (i, n) { 
     var path = []; 
     $.each(n, function (j, p) { 
      var ll = new google.maps.LatLng(p[1], p[0]); 
      path.push(ll); 
     }); 
     paths.push(path); 
    }); 

    return new google.maps.Polygon({ 
     paths: paths, 
     strokeColor: "#FF0000", 
     strokeOpacity: 0.8, 
     strokeWeight: 1, 
     fillColor: "#FF0000", 
     fillOpacity: 0.35, 
     map: map 
    }); 
} 
0

vous avez fait le polygone;. vous n'avez pas ajouté à une carte

en supposant map. est une variable de type google.maps.Map, faites ceci:

var poly = createGeoJsonPolygon(arg1, arg2, arg3); 
poly.setMap(map); 

Notez également que vos données (qui pointent vers vous) est pas (comme vous l'avez) un tableau de points; C'est un tableau de tableaux de tableaux de points.

+0

Ah merde. J'ai laissé ce code ... (c'était au-dessus de la fonction). Je vais mettre à jour mon message, ci-dessus. –

+0

aussi, j'ai un tableau de polygones. et chaque polygone a un tableau de points. Est-ce une mauvaise/mauvaise chose? –

+0

Non, polygon.path doit être un tableau de tableaux de points. (Mais si c'est juste un tableau de points, l'API Google le convertira pour votre commodité.) – tpdi

0

Sans encoder les contours de polygones, vous pouvez utiliser un seul contour par polygone, voir document: http://code.google.com/intl/ru/apis/maps/documentation/javascript/v2/reference.html#GPolygon. Il accepte uniquement un tableau de points, pas de contours.

Lisez à propos de l'encodage polygonal pour Google Maps, il y a un readymade js pour cela.

modifier: docs pour v3: http://code.google.com/intl/ru/apis/maps/documentation/javascript/reference.html#PolygonOptions

+0

@alxx salut mate - désolé, mais je ne suis pas sûr de ce que vous voulez dire :(* Contours de polygones encodés *? J'ai un tableau de polygones.J'ai basé mon code de ce javascript: http://demos.geojason.info/ complexe-geojson-polygones-google-maps-demo.php (et que je pense fonctionne) Pouvez-vous également expliquer s'il vous plaît ce * polygone encoding * concept, s'il vous plaît –

+1

Il utilise v3, pas v2 – tpdi

+0

Désolé, j'avais Vous avez résolu le même problème récemment en v2 et vous vous êtes fixé dessus: comme on dit, si vous avez un marteau, tous les problèmes ressemblent à des clous ... En v3, il n'y a pas besoin d'encodage, oubliez-le. un polygone explicitement (un tableau de tableaux de points) Si vous avez un tableau de polygones, vous avez le choix: créer un polygone complexe à partir de ces contours (chacun étant un tableau de points) ou créer plusieurs polygones. – alxx

Questions connexes