2010-06-15 67 views
2

我用下面的嘗試緯度和經度,但它不工作我想從GMAP控制到文本框

var txtlat=document.getElementById('TextBox1').value=GMap1.getCenter().lat(); 
var txtlong=document.getElementById('TextBox2').value=GMap1.getCenter().lng(); 

它給作爲「對象不支持此屬性或JavaScript錯誤方法」。

我該怎麼做?

我真的需要幫助...

謝謝!

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication5._Default" %> 

<%@ Register assembly="GMaps" namespace="Subgurim.Controles" tagprefix="cc1" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Untitled Page</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 

     <cc1:GMap ID="GMap1" runat="server" 
      Key="ABQIAAAAs98ZVKM_IHFkRP_EavW_DhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxQGoS16N7wYnBPhgtjTxMaUVN58kA" /> 
     <br /> 
     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
     <br /> 
     <br /> 
     <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 

    </div> 
    <script type="text/javascript"> 

    var txtlat=document.getElementById('TextBox1').value=GMap1.getCenter().lat(); 
    var txtlong=document.getElementById('TextBox2').value=GMap1.getCenter().lng(); 

    </script> 
    </form> 
</body> 
</html> 
+0

你可以發佈更多的代碼,GMap1特別是如何創建? – paullb 2010-06-16 08:12:14

+0

以上帖子顯示了我如何嘗試這樣做。 謝謝! – chamara 2010-06-16 16:06:14

回答

0

我找到了答案忘了這裏提到這樣的答案很簡單

Msg1Msg2是DIV標籤

protected string Gmap1_Click(object s, Subgurim.Controles.GAjaxServerEventArgs e) 
     { 
     return "document.getElementById('Msg1').innerHTML=" 
+ e.point.lat.ToString() + ";" + "document.getElementById('Msg2').innerHTML=" 
+ e.point.lng.ToString(); 

     } 
1

您是否確認getCenter返回的值不爲null?它應該是一個LatLng對象,但也許它返回null ...你確定中心已經設置好了嗎?此外,什麼對象類型是GMap1?你如何創建該對象?

+0

Hello Brian, 對不起。我對這個google地圖環境很陌生。我無法準確理解你在說什麼.Gmap1是Gmap控制器的ID。我仍然沒有解決這個問題。 謝謝! – chamara 2010-06-16 15:21:48

+0

查看@ Daniel的樣本,你是否符合GMap控件的設置? – 2010-06-16 15:24:25

2

第2更新:除了更新的問題,您還有服務器端文本框控件的另一個問題。您不能像使用document.getElementById()那樣通過JavaScript引用它們。

您可以使用普通的HTML控件:<input type="text" id="textbox1" />,否則您將不得不使用類似document.getElementById('<%= TextBox1.ClientID %>')的內容來引用JavaScript中的文本框。


1日更新:繼的意見,以下例子已經更新到返回鼠標點擊其中的緯度/經度。


您可能想看看下面的例子,它已經過測試,正常工作:

使用v3 API

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
    <title>Google Maps getCenter()</title> 
    <script src="http://maps.google.com/maps/api/js?sensor=false" 
      type="text/javascript"></script> 
</head> 
<body> 
    <div id="map" style="width: 500px; height: 400px;"></div> 
    <input type="text" id="textbox1" /> 
    <input type="text" id="textbox2" /> 

    <script type="text/javascript"> 
    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 2, 
     center: new google.maps.LatLng(35.55, -25.75), 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    google.maps.event.addListener(map, 'click', function(event) { 
     if (event.latLng) { 
     document.getElementById('textbox1').value = event.latLng.lat(); 
     document.getElementById('textbox2').value = event.latLng.lng(); 
     } 
    }); 

    </script> 
</body> 
</html> 

使用v2 API

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps getCenter()</title> 
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false" 
      type="text/javascript"></script> 
    </head> 
    <body onunload="GUnload()"> 
    <div id="map" style="width: 500px; height: 400px;"></div> 
    <input type="text" id="textbox1" /> 
    <input type="text" id="textbox2" /> 

    <script type="text/javascript"> 
     var map = new GMap2(document.getElementById("map")); 
     var centerPoint = new GLatLng(35.55, -25.75); 
     map.setCenter(centerPoint, 2); 

     GEvent.addListener(map,"click", function(overlay, latlng) {  
     if (latlng) { 
      document.getElementById('textbox1').value = latlng.lat(); 
      document.getElementById('textbox2').value = latlng.lng(); 
     } 
     }); 
    </script> 
    </body> 
</html> 

以上示例的截圖:

Google Maps getCenter()

+0

你好Daniel我試過這個。它在頁面加載時得到35.55和-25.75。我想要的是獲取文本框中的經度和緯度,當用戶點擊地圖時,以及爲什麼你使用 我不能簡單地拖放我已經添加到我的工具箱中的Gmap控制器... <%@ Register assembly = 「GMaps」namespace =「Subgurim.Controles」tagprefix =「cc1」%> 。我仍然有問題。 謝謝! – chamara 2010-06-16 15:37:12

+0

@chamara:更新了示例以給出點擊鼠標點的緯度/經度...對於'

  • 11. 從下拉複製到文本框
  • 12. asp.net /我想清除文本框歷史
  • 13. 我想禁用一個tinymce文本框
  • 14. 我想讓我的文本框只允許文本
  • 15. 我想使用PHP從文本框中獲取文本並將其添加到文本文件中
  • 16. 想要得到的文本框
  • 17. 複製從一個文本框,我綁定到另一個
  • 18. 谷歌腳本textarea或文本框不想給我的文本
  • 19. 我如何複製文本從文本框到剪貼板使用jquery/javascript/html5
  • 20. 我如何參考我的文本框的類型文件從視圖到控制器
  • 21. 我想從數組複製到字符
  • 22. 我想插入一個編輯文本框到一個標籤
  • 23. JQuery:我想回到一個文本框的模糊事件
  • 24. 我想從我的代碼讀取控制檯命令到我目前的控制檯應用程序
  • 25. 我想從文本文件傳輸數據到數組
  • 26. 從多個文本輸入框複製到文本區域:
  • 27. 我想閱讀使用C#的pdf文件的文本框控件
  • 28. 控件會自動從一個文本框轉移到其他文本框?
  • 29. 我想不斷在文本框中顯示文本
  • 30. 我想從DataGridView導出到文本文件,但我得到的錯誤