1

ユーザーがこの新しい場所に従ってテキストフィールドに新しい場所のアドレスを入力したときに、Googleマップでiframeを更新する必要があります。

私のHTMLコード:

  <input type="text" id="address" />
<input type="button" id="search" value="Search" onclick="javascript:findLocation();"/>
<iframe id="mapView" width="700" height="385" 
    frameborder="0" scrolling="no" 
    marginheight="0" marginwidth="0" 
    src="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=Kharkiv&amp;aq=&amp;vpsrc=0&amp;ie=UTF8&amp;hq=&amp;hnear=Kharkiv&amp;z=14&amp;output=embed">
</iframe>

私のJavaScriptコード:

function findLocation(){
    var location=document.getElementById('address').value;
    var newLocation="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q="+location+"&amp;aq=&amp;vpsrc=0&amp;ie=UTF8&amp;hq=&amp;hnear="+location+"&amp;z=14&amp;output=embed";
    document.getElementById("mapView").src=newLocation;
    document.getElementById("mapView").reload(true);
}

ただし、iframeはボタンを押した後に無効になります。

何か案は?

4

2 に答える 2

1

タイマーを使用してステージからマップを削除し、再度追加して、完全な Google マップのライフサイクルを呼び出します。

package
{
import com.google.maps.LatLng;
import com.google.maps.Map;
import com.google.maps.MapEvent;
import com.google.maps.MapType;

import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.geom.Point;
import flash.utils.Timer;

public class Test extends Sprite
{

    private var _map:Map;

    private var _timer:Timer;

    public function Test()
    {
        super();

        createMap();

        _timer = new Timer(300000); // 5-min
        _timer.addEventListener(TimerEvent.TIMER, timerHandler);
        _timer.start();
    }

    private function timerHandler(event:TimerEvent):void
    {
        while (numChildren > 0)
            removeChildAt(0);

        createMap();
    }

    protected function createMap():void
    {
        _map = new Map();
        _map.key = "YOUR_API_KEY";
        _map.sensor = "false";
        _map.setSize(new Point(stage.stageWidth, stage.stageHeight));
        addChild(_map);

        _map.addEventListener(MapEvent.MAP_READY, mapReadyHandler);
    }

    protected function mapReadyHandler(event:MapEvent):void
    {
        _map.removeEventListener(MapEvent.MAP_READY, mapReadyHandler);
        _map.setCenter(new LatLng(37.4419, -122.1419), 13, MapType.NORMAL_MAP_TYPE);
    }

}
}
于 2013-02-27T11:07:52.620 に答える