1

以下のコードでは、グーグルマップは常にパリのみを表示し、入力された場所は表示しません。

以下のフォーム要素では、javascript showAddress(location)関数を呼び出しています。

HTML本文:

<body onload="loadDefaultMap()" onunload="GUnload()">

<form action="#" method="post" onsubmit="showAddress(this.address.value); return false">
<input type="text" name="address" size="40" value="Paris"/>
<input type="submit"/>
</form>
<div id="map" style="width:500px;height:400px"></div>
</body>

脚本:

<script type="text/javascript">
    function loadDefaultMap(){
        if(GBrowserIsCompatible()){

            var center =  new GLatLng(48.85661, 2.35222); //Paris

            var map = new GMap2(document.getElementById("map"));
            map.addControl(new GSmallMapControl());
            map.addControl(new GMapTypeControl());
            map.setCenter(center,15);

            geoCoder = new GClientGeocoder();   // this will render the map on th bases of address entered

            var marker = new GMarker(center, {draggable: true});  
            map.addOverlay(marker);

            GEvent.addListener(marker, "dragend", function() {
                var point = marker.getPoint();
                map.panTo(point);
            });

            GEvent.addListener(map, "moveend", function() {
                map.clearOverlays();
                var center = map.getCenter();
                var marker = new GMarker(center, {draggable: true});
                map.addOverlay(marker);

                GEvent.addListener(marker, "dragend", function() {
                    var point =marker.getPoint();
                    map.panTo(point);
                });
            });
        }
    }


    function showAddress(address){
        var map = new GMap2(document.getElementById("map"));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());

        if(geoCoder){
            geoCoder.getLatLng(address, function(point){
                if(!point){
                    alert('Location Not Available');
                }else{
                    map.clearOverlays();
                    map.setCenter(point,15);
                    var marker = new GMarker(address, {draggable: true});  
                    map.addOverlay(marker);
                }
            })


        }
    }

    </script>

前もって感謝します :)

4

1 に答える 1

0

map.setCenter()GLatLngではなくオブジェクトを取りますpoint。から新しいGLatLngオブジェクトを作成してみてくださいpoint。ポイントに緯度と経度のフィールドが含まれている場合、次のようなことができます。

map.setCenter(new GLatLng(point.latitude, point.longitude), 15);
于 2012-05-30T20:39:46.470 に答える