谷歌地图Api和C#

时间:2011-06-11 10:30:27

标签: c# winforms google-maps-api-3 webbrowser-control

我的地图有问题。地图在5个月前正常工作。现在当我用我的坐标加载地图时,地图正在加载,但是当我开始浏览地图,缩放等时,我得到的白色屏幕就像没有与地图的连接..我需要再次加载地图,但同样的问题又发生了。大约5个月前我使用这个脚本,一切都工作正常..浏览,缩放,更改地图类型,一切都没有任何问题。我根据谷歌网站创建了html代码并将其放入新的资源文件中:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<title>Google Maps JavaScript API v3 Example: Map Simple</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">



  function load(latitude,longitude,zoomik) {
    var myLatlng = new google.maps.LatLng(latitude,longitude);
    var myOptions = {
      zoom: zoomik,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }


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

    var marker = new google.maps.Marker({
        position: myLatlng, 
        map: map,
        title:"Here!"});

  }

</script>
</head>
<body onload="load()">
  <div id="map_canvas"></div>
</body>
</html>

我的按钮代码是:

  private void TestButton_Click(object sender, EventArgs e)
    {
        webBrowser1.Document.InvokeScript("load", new object[] { -34.397, 150.644, 8 });
    }

屏幕: 正确加载地图: enter image description here

使用平移工具或缩放工具后: - 空白屏幕。 enter image description here

我正在使用winforms中的Visual C#Express和WebBrowser控件。

HTML代码在Firefox中正常运行(使用Aptana Studio)(缩放和平移工作正常)

来自google api示例的此代码还无法正常运行:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css"        rel="stylesheet" type="text/css" />
<title>Google Maps JavaScript API v3 Example: Map Simple</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
 function initialize() {
    var myLatlng = new google.maps.LatLng(-34.397, 150.644);
    var myOptions = {
     zoom: 8,
     center: myLatlng,
     mapTypeId: google.maps.MapTypeId.ROADMAP
   }
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
   }
  </script>
  </head>
  <body onload="initialize()">
  <div id="map_canvas"></div>
  </body>
  </html>

4 个答案:

答案 0 :(得分:1)

我自己也想过这个。

错了:

<div id="map_canvas"></div>

将其更改为:

<div id="map_canvas" style="width:500px; height:400px"></div>

地图正常运作。

答案 1 :(得分:0)

当我遇到gMaps问题时,我要做的第一件事就是更改地图密钥,你试试这个吗?您尝试过哪些浏览器? Firefox,Chrome还是IE?

答案 2 :(得分:0)

我在使用Google Maps v3时遇到了类似的问题。虽然,我的问题是我定位了当前的Google Maps v3 API,并且他们“弃用”了一个名为set_map的被调用者,并引入了与setMap相同的功能。

我的代码中没有看到任何应该被破坏的内容。如果此页面上有其他JavaScript引发错误,则有时会导致Google地图无法加载。例如,如果您引用其他一些抛出未捕获异常的JavaScript,则可能无法加载地图。

我的建议是指定Google Maps API的版本而不是使用当前版本,看看是否修复了它:

<script type="text/javascript" 
   src="http://maps.google.com/maps/api/js?v=3.3&sensor=false">
</script>

编辑:同样,再次查看您的帖子,您可能想要移动用于设置标记的逻辑并将缩放映射到加载函数之外。这样,当您单击按钮时,您不会重新初始化地图和选项。前几天我在on文档中看到地图现在有div选项的“清除”选项,并且加载地图两次(正文加载,按钮点击)可能会强制清除行为。同样,针对之前的API版本,它可能会起作用。

答案 3 :(得分:-1)

也许您可以在Flash中加载谷歌地图而不是在WebBrowser对象中加载?以下链接说明了如何使用WPF进行操作,但它应该很容易应用于WinForms:http://code.google.com/intl/fr/apis/maps/articles/flashmapinwpf.html