1

ユーザー入力座標を使用して Google マップにポリゴンを描画する方法。2 つの入力フィールド (緯度と経度) があり、ユーザーがボタンをクリックすると、多角形を描画したいと考えています。このコードがありますが、機能しません。誰でも私を助けることができますか?

HTML:

<form onsubmit="show(this.lat.value, this.lon.value); return false;">
    <p><label>Latituda</label></p>
       <input type="text" size="13" id="latbox2" name="lat" value="">
    <p><label>Longituda</label></p>
       <input type="text" size="13" id="lonbox2" name="lon" value="">                        
    <p><input type="submit" id="button2" value="Show" class="btnsearch" ></p>
</form>

JavaScript:

function xz() {
    if (GBrowserIsCompatible()){
            map = new GMap2(document.getElementById("map_canvas"));
            map.setCenter(new GLatLng(43.500752, 16.435547), 6);
            map.setUIToDefault();
            map.addMapType(G_SATELLITE_3D_MAP);
            map.enableGoogleBar();
    }
  }
    function show(lat, lon){
        var latOffset = 0.01;
        var lonOffset = 0.01;
        var polygon = new GPolygon([
            new GLatLng(lat, lon - lonOffset),
            new GLatLng(lat + latOffset, lon),
            new GLatLng(lat, lon + lonOffset),
            new GLatLng(lat - latOffset, lon),
            new GLatLng(lat, lon - lonOffset)
        ], "#f33f00", 5, 1, "#ff0000", 0.2);
        map.addOverlay(polygon);
    }
4

1 に答える 1

1

これの何が問題なのかは実際には言いませんが、実験したところ、GLatLng() には文字列ではなく数値が必要であるように見えます。ドキュメントには Numbers を使用するように記載されています。入力フィールドの内容は文字列です。

それらを数値に変換するとうまくいくようです(ただし、ズーム6はポリゴンが非常に小さいことを意味します)。setCenter()見えるように最後にa も追加したことに注意してください。

var lat = parseFloat(lat);
var lon = parseFloat(lon);

http://jsfiddle.net/csRCd/1/

于 2012-05-25T11:40:21.630 に答える