2016-04-02 15 views
0

Ich bin neu in JavaScript und ich versuche Google Map API zu verwenden, um ein Polygon zu zeichnen. Die Standardpfade in den google.maps.Polygons funktionieren JSON akzeptieren mit folgendem Format:Wie zeichnet man ein Polygon in der Google Map API unter Verwendung eines Koordinaten-Arrays?

var trianglecoords=[ 
      {lat: 18.466, lng: -66.518}, 
      {lat: 18.466, lng: -66.118}, 
      {lat: 18.166, lng: -66.118}, 
       ]; 

aber mein Format ist:

var trianglecoords=[ 
        [18.466,-66.518], 
        [18.466,-66.118], 
        [18.166,-66.118], 
         ]; 

mein Format kann ich nicht auf das Dreieck in der Karte sehen. Kann mir jemand helfen?

hier ist mein Code:

function initMap() { 
    var map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 5, 
    center: {lat: 24.886, lng: -70.268}, 
    mapTypeId: google.maps.MapTypeId.TERRAIN 
    }); 

    // Define the LatLng coordinates for the polygon's path. 
    var triangleCoords = [ 
    [25.774, -80.190], 
    [18.466, -66.118], 
    [32.321,-64.757], 
    [25.774, -80.190] 
    ]; 

    // Construct the polygon. 
    var bermudaTriangle = new google.maps.Polygon({ 
    paths: triangleCoords, 
    strokeColor: '#FF0000', 
    strokeOpacity: 0.8, 
    strokeWeight: 2, 
    fillColor: '#FF0000', 
    fillOpacity: 0.35 
    }); 
    bermudaTriangle.setMap(map); 
} 
+0

Ihr Format funktioniert nicht. Sie müssen es in ein Array von google.maps.LatLng-Objekten oder google.maps.LatLngLiteral-Objekten übersetzen. – geocodezip

+0

Danke! es funktionierte, wenn ich die folgenden Codes addiere, um latlng Objekte zu erstellen: var points = []; für (var i = 0; i <4; i ++) { points.push (neu google.maps.LatLng (triangleCoords [i] [0], triangleCoords [i] [1])) } –

Antwort

3

Ihr Format wird nicht funktionieren. Sie müssen es in ein Array von google.maps.LatLng Objekten oder google.maps.LatLngLiteral Objekte übersetzen.

Entweder:

var points=[]; 
for(var i=0; i<triangleCoords.length; i++) { 
    points.push(new google.maps.LatLng(triangleCoords[i][0], 
            triangleCoords[i][1])); 
} 
// Construct the polygon. 
var bermudaTriangle = new google.maps.Polygon({ 
    paths: points, 
    strokeColor: '#FF0000', 
    strokeOpacity: 0.8, 
    strokeWeight: 2, 
    fillColor: '#FF0000', 
    fillOpacity: 0.35 
}); 
bermudaTriangle.setMap(map); 

Oder:

var points=[]; 
for(var i=0; i<triangleCoords.length; i++) { 
    points.push({ 
    lat: triangleCoords[i][0], 
    lng: triangleCoords[i][1] 
    }); 
} 
// Construct the polygon. 
var bermudaTriangle = new google.maps.Polygon({ 
    paths: points, 
    strokeColor: '#FF0000', 
    strokeOpacity: 0.8, 
    strokeWeight: 2, 
    fillColor: '#FF0000', 
    fillOpacity: 0.35 
}); 
bermudaTriangle.setMap(map); 

Code-Schnipsel:

function initMap() { 
 
    var map = new google.maps.Map(document.getElementById('map'), { 
 
    zoom: 5, 
 
    center: { 
 
     lat: 24.886, 
 
     lng: -70.268 
 
    }, 
 
    mapTypeId: google.maps.MapTypeId.TERRAIN 
 
    }); 
 

 
    // Define the LatLng coordinates for the polygon's path. 
 
    var triangleCoords = [ 
 
    [25.774, -80.190], 
 
    [18.466, -66.118], 
 
    [32.321, -64.757], 
 
    [25.774, -80.190] 
 
    ]; 
 
    var points = []; 
 
    for (var i = 0; i < triangleCoords.length; i++) { 
 
    points.push({ 
 
     lat: triangleCoords[i][0], 
 
     lng: triangleCoords[i][1] 
 
    }); 
 
    } 
 
    // Construct the polygon. 
 
    var bermudaTriangle = new google.maps.Polygon({ 
 
    paths: points, 
 
    strokeColor: '#FF0000', 
 
    strokeOpacity: 0.8, 
 
    strokeWeight: 2, 
 
    fillColor: '#FF0000', 
 
    fillOpacity: 0.35 
 
    }); 
 
    bermudaTriangle.setMap(map); 
 
} 
 
google.maps.event.addDomListener(window, "load", initMap);
html, 
 
body, 
 
#map { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="map"></div>