私は編集されたポリゴンの新しい座標を取得する方法を見つけようとしています。最初に地図上にポリゴンを描画し、そのポリゴンの座標をテキストエリア 'coordinaten
'に表示します。座標はJSON STRINGに処理されます。 < =この部分の作品元のポリゴンを編集した後に新しい座標を取得する
このステップの後に、 'editable
'がtrue
である場合、ポリゴンを再形成/編集することができます。新しい座標を2番目のテキストエリア 'new_coordinaten
'に表示します。私はこの仕事を得ると、私は同じテキストエリアにそれらを保つだろうが、今は大丈夫です。
私はgoogle maps api(js)の新機能ですが、この 'set_at'と 'insert_at'は実際にどのように機能しますか? いつトリガーされますか?あなたが私に尋ねるならば、この部分にgoogle maps apiのドキュメントは明確ではありません。
しかし、元のポリゴンの座標を保存する方法について同じコードを書いたら、正しく機能するはずです。私はこれを試みましたが、結果はありませんでした。
マイコード:
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<div id="map" style="width:100%;height:400px;"></div><br>
<textarea cols="100" rows="10" id="coordinaten"></textarea><br>
<textarea cols="100" rows="10" id="new_coordinaten"></textarea>
</body>
<!-- GOOGLE API -->
<script src="https://maps.googleapis.com/maps/api/js?key=APIKEY&callback=myMap">
</script>
<script>
function initialize()
{
var mapOptions = {
zoom: 10,
center: new google.maps.LatLng(51.0108706, 3.7264613),
};
var map = new google.maps.Map(document.getElementById('map'), mapOptions);
var polygonOptions = {
strokeColor: '#FF0000',
strokeWeight: 2,
strokeOpacity: 0.8,
fillColor: '#FF0000',
fillOpacity: 0.35,
editable: true, //editeren van de polygon
draggable: false //verplaatsen van de polygon
};
var polygon = new google.maps.Polygon(polygonOptions);
polygon.setMap(map);
google.maps.event.addListener(map, "click", function(event){
var path = polygon.getPath();
path.push(event.latLng);
/* --POLYGON-- */
//converteren van de polygon naar JSON string
//stap 1, coördinaten van polygon naar een array[]
var coordinates_poly = polygon.getPath().getArray();
var newCoordinates_poly = [];
for (var i = 0; i < coordinates_poly.length; i++){
lat_poly = coordinates_poly[i].lat();
lng_poly = coordinates_poly[i].lng();
latlng_poly = [lat_poly, lng_poly];
newCoordinates_poly.push(latlng_poly);
}
//stap 2, converteren van array[] naar JSON
var str_coordinates_poly = JSON.stringify(newCoordinates_poly);
//stap 3, voeg de JSON string aan het textveld na druk van knop
document.getElementById('coordinaten').value = str_coordinates_poly;
});
google.maps.event.addListener(polygon, 'set_at', function(){
document.getElementById('new_coordinaten').value = "test - set_at";
});
google.maps.event.addListener(polygon, 'insert_at', function(){
document.getElementById('new_coordinaten').value = "test - insert_at";
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</html>
私はset_atが何かをしたいだけで、remove_atは使用されず、今はatleastでなく、insert_atを無効にしたいと思います。万が一、insert_atリスナをトリガするポリゴン上で目立たない中間点を隠す/削除する方法を知っていますか? – TDB