2010-06-15 55 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:更新了示例以给出点击鼠标点的纬度/经度...对于'