0

しばらく前に、stackoverflow の誰かが、Windows アプリケーションで Google マップ API を使用するための優れたソリューションを提供してくれました。

html コード:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />

<script type="text/javascript" src="http://maps.google.com.mx/maps/api/js?sensor=true&language=es"></script>
<script type="text/javascript">

    var geocoder;
    var map;


    function initialize(address) {

        geocoder = new google.maps.Geocoder();

        var myOptions = {
            zoom: 16,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }

        geocoder.geocode({ 'address': (address ? address : "Miami Beach, Flordia")}, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                map.setCenter(results[0].geometry.location);
                var marker = new google.maps.Marker({
                    map: map,
                    position: results[0].geometry.location
                });
            } else {
                alert("Geocode was not successful for the following reason: " + status);
            }
        });

        map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    }


    </script>
  </head>
  <body onload="initialize()">
    <div id="map_canvas" style="width:100%; height:100%"></div>

  </body>
</html>

Windows アプリケーション コード

Public Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        WebBrowser1.Document.InvokeScript("initialize", New String() {AddressM.Text})

    End Sub

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

        WebBrowser1.Url = New Uri("http://datasharesas.com/CompanyAdmin/map2.html")
    End Sub
End Class

プロジェクトのイメージ

今の問題は、同じアドレスを一度見ると、完全に機能することです。2 回検索すると灰色の画面が表示され、3 回以上検索するとエラー スクリプトが表示される

エラーメッセージ

これはどのように修正できますか?

前もって感謝します、

レオ P.

4

1 に答える 1

1

ジオコーディングは非同期であるため、マップを使用しようとしたときにマップがまだ作成されていない場合があります (返される速度によって異なります)。最初にマップを作成し、後でジオコーディングする必要があります。代わりにこれを試してください:

    script type="text/javascript">
    // Global vars
    // Sorry, I can't be bothered typing "google.maps." every time. ;-)
       var G = google.maps;
       var map;
       var geocoder = new G.Geocoder();

        function initialize() {
          createMap();
          geocode('Chicago');
        }

        function createMap() {
            var myOptions = {
                center: new G.LatLng(0,0),
                zoom: 4,
                mapTypeId: G.MapTypeId.ROADMAP
            }
            map = new G.Map(document.getElementById("map_canvas"), myOptions);
        }

function geocode(address){
            geocoder.geocode({ 'address': (address ? address : "Miami Beach, Florida")}, function (results, status) {
                if (status == G.GeocoderStatus.OK) {
                    map.setCenter(results[0].geometry.location);
                    var marker = new G.Marker({
                        map: map,
                        position: results[0].geometry.location
                    });
                } else {
                    alert("Geocode was not successful for the following reason: " + status);
                }
            });

        }


        </script>
      </head>
      <body onload="initialize()">
        <div id="map_canvas" style="width:100%; height:100%"></div>

      </body>
    </html>
于 2012-09-01T06:03:14.597 に答える