2016-07-22 18 views
1

Ich versuche, ein Polygon zu einer Google-Karte einzufügen. Die Koordinaten für das Polygon in einem Textfeld Wert wie folgt gespeichert: {"type":"Polygon","coordinates":[[[9.99893181141,53.7746888818],[9.53475944814,53.5745692488],[9.94125358875,53.3636652005],[10.4136656981,53.5223496849],[10.3285216551,53.7860492252],[10.1966857177,53.7892944727],[9.99893181141,53.7746888818]]]}google maps addGeoJson aus Textfeld mit js

Ich weiß, ich GeoJSON Dateien in die Karte mit map.data.addGeoJson(geoJson); laden kann, aber ich bin nicht in der Lage dem Wert, den richtigen Weg zu formatieren (mit js).

ich eine Lösung wie diese bin auf der Suche:

textfieldvalue = document.getElementById('mytextfield').value; 

// if nessesary convert textfield to geojson. How to convert 
convertettextfield = howtoconvert; 

//I dont know if its right like this? 
var geoJson = { 

    "type": "FeatureCollection", 
     "features": [ 
       "type": "Feature", 
       "geometry": { 

       }, 
      "properties": {} 
      ] 
}; 
//add convertettextfield to geoJson. How? 
geoJson.howtoputitintogeometry(convertettextfield); 
map.data.addGeoJson(geoJson); 

Antwort

2

Text zu JSON konvertieren, verwenden JSON.parse.

Code-Schnipsel:

var geocoder; 
 
var map; 
 

 
function initialize() { 
 
    var map = new google.maps.Map(
 
    document.getElementById("map_canvas"), { 
 
     center: new google.maps.LatLng(37.4419, -122.1419), 
 
     zoom: 13, 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    }); 
 
    var geoJson = { 
 
    "type": "FeatureCollection", 
 
    "features": [{ 
 
     "type": "Feature", 
 
     "geometry": {}, 
 
     "properties": {} 
 
    }] 
 
    }; 
 
    geoJson.features[0].geometry = JSON.parse(document.getElementById('polyJson').value); 
 
    map.data.addListener('addfeature', function(evt) { 
 
    var bounds = new google.maps.LatLngBounds(); 
 
    var coords = evt.feature.getGeometry().getAt(0).getArray(); 
 
    for (var i = 0; i < coords.length; i++) { 
 
     bounds.extend(coords[i]); 
 
    } 
 
    map.fitBounds(bounds); 
 
    }); 
 
    map.data.addGeoJson(geoJson); 
 
    google.maps.event.addDomListener(document.getElementById('btn'), 'click', function() { 
 
    geoJson.features[0].geometry = JSON.parse(document.getElementById('polyJson2').value); 
 
    map.data.addGeoJson(geoJson); 
 
    }); 
 
} 
 
google.maps.event.addDomListener(window, "load", initialize);
html, 
 
body, 
 
#map_canvas { 
 
    height: 100%; 
 
    width: 100%; 
 
    margin: 0px; 
 
    padding: 0px 
 
}
<script src="https://maps.googleapis.com/maps/api/js"></script> 
 
<div id="map_canvas"></div> 
 
<input id="polyJson" type="text" value='{"type":"Polygon","coordinates":[[[9.99893181141,53.7746888818],[9.53475944814,53.5745692488],[9.94125358875,53.3636652005],[10.4136656981,53.5223496849],[10.3285216551,53.7860492252],[10.1966857177,53.7892944727],[9.99893181141,53.7746888818]]]}' 
 
/>; 
 
<input id="polyJson2" type="text" value='{"type": "Polygon","coordinates": [[[35.188327,31.699929,0],[35.187895,31.699669,0],[35.187014,31.699729,0],[35.186867,31.700016,0],[35.186783,31.700395,0],[35.186921,31.700787,0],[35.187232,31.701291,0],[35.18763,31.701844,0],[35.187442,31.702328,0],[35.18692,31.702779,0],[35.187064,31.703654,0],[35.187433,31.703794,0],[35.188155,31.70344,0],[35.188921,31.702917,0],[35.189348,31.702887,0],[35.189828,31.70302,0],[35.190313,31.703443,0],[35.190359,31.704104,0],[35.190224,31.704348,0],[35.189797,31.704585,0],[35.189753,31.704948,0],[35.189847,31.705107,0],[35.190187,31.705015,0],[35.190604,31.705041,0],[35.190931,31.705171,0],[35.191435,31.70526,0],[35.191861,31.705231,0],[35.192482,31.705008,0],[35.192945,31.704893,0],[35.193564,31.704449,0],[35.192869,31.704004,0],[35.192256,31.703737,0],[35.191754,31.703371,0],[35.191306,31.703001,0],[35.190838,31.702632,0],[35.190546,31.70221,0],[35.190348,31.701739,0],[35.190323,31.701589,0],[35.189814,31.701624,0],[35.189443,31.701456,0],[35.189108,31.701217,0],[35.188509,31.700359,0],[35.188327,31.699929,0]]]}' 
 
/> 
 
<input id="btn" type="button" value="poly2" />