0

我想将两个文本框的纬度和经度值发送到一个 java 脚本函数,该函数在地图上的该位置显示一个标记。

我已经编写了以下代码,但它不起作用:

<script type="text/javascript">
var map;
function init()
{
    var mapoptions=
    {
        center: new google.maps.LatLng(17.379064211298, 78.478946685791),
        zoom: 8,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map=new google.maps.Map(document.getElementById("map_can"), mapoptions);
}    
function placemark()
{
   var ulatlng= new google.maps.LatLng(document.getElementById('<%=TextBox1.ClientID %>'),document.getElementById('<%=TextBox2.ClientID %>'));
   var marker = new google.maps.Marker({position:ulatlng,map:map});
}   
</script>

按钮控制代码:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="placemark()" />

不显示标记。Chrome 控制台也不会显示任何错误。我哪里错了?

4

4 回答 4

1

根据google API V3 参考,构造函数是

LatLng(lat:number, lng:number, noWrap?:boolean)

所以你的功能可能是:

function placemark()
{
   var ulatlng= new google.maps.LatLng(document.getElementById('<%=TextBox1.ClientID %>').value,document.getElementById('<%=TextBox2.ClientID %>').value);
   var marker = new google.maps.Marker({position:ulatlng,map:map});
}

并将您的按钮定义更新为:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="placemark(); return false;" />

但可能会更好:

function placemark(lat, lng)
{
   var ulatlng= new google.maps.LatLng(lat,lng);
   var marker = new google.maps.Marker({position:ulatlng,map:map});
} 

并将您的按钮更新为:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="placemark(document.getElementById('<%=TextBox1.ClientID %>').value,document.getElementById('<%=TextBox2.ClientID %>').value); return false" />

无论哪种方式,请确保您包含“return false”,以便您的页面不会回发,从而导致刷新。

如果您想更清洁:

澳交所:

<asp:Button ID="uxBtnPlaceMarker" runat="server" Text="Place Marker" />

后面的代码:

   protected void Page_Load(Object sender, EventArgs args)
   {
       //...Do whatever you do here...
       this.uxBtnPlaceMarker.OnClientClick = string.Format("placemark(document.getElementById('{0}').value,document.getElementById('{1}').value); return false", TextBox1.ClientID, TextBox2.ClientID);
   }
于 2012-09-05T12:24:05.737 回答
0

您应该使用文本框的 .value 属性。例如

    var mapCan = document.getElementById("map_can").value;
于 2012-09-05T11:20:08.967 回答
0

尝试获取文本框值:

var ulatlng= new google.maps.LatLng(document.getElementById('<%=TextBox1.ClientID %>').value,document.getElementById('<%=TextBox2.ClientID %>').value)

您还可以尝试缩小地图。标记可能放错了位置并显示在其他地方(Lat Long 已交换)。测试用正确的值替换文本框并确保标记显示

于 2012-09-05T11:14:05.600 回答
0
var ulatlng=  document.getElementById(TextBox1).value; 

像这样使用这将工作

于 2012-09-05T12:17:21.503 回答