经度和纬度未分配给HiddenFields [更新]

时间:2019-04-02 14:07:08

标签: javascript asp.net geocoding

[更新] 我试图在推入数据库时​​通过aspx文件的后端(.cs)上的地理编码来获取经度和纬度。但是,当我尝试在Geocode函数中进行console.log时,未分配任何HiddenFields,这使我不确定。

我尝试了很多解决方案,但是没有一个解决方案,或者没有任何解决方案,问题就半途而废了。 我尝试使用:
1. Request.Form [Latitude.UniqueID] 2.使用SetTimeOut(在地理编码功能上) 3.在后端使用hiddenField的.Value / .Value.toString()

不幸的是,这些都不起作用。

地理编码功能

        var hiddenlat = $("#<%= hiddenlat.ClientID %>");
        var hiddenlng = $("#<%= hiddenlng.ClientID %>");

         function getLatLng() {
         ...

        geocoder.geocode({ 'address': "'" + address + "'" }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                console.log("postal code in post.aspx is ", <%= postalcode 
                 %>);
                var latitude = results[0].geometry.location.lat();
                var longitude = results[0].geometry.location.lng();
                hiddenlat.val(latitude);
                hiddenlng.val(longitude);
                console.log(hiddenlat.val()); // undefined
                console.log(hiddenlng.val()); // undefined
                var data = { "lat": latitude, "lng": longitude };
              } else {
                console.log('request fail');
            }

        });

        return true;

    }

这是隐藏字段

      <asp:HiddenField ID="hiddenlat" runat="server" />
        <asp:HiddenField ID="hiddenlng" runat="server" />

用于发布的按钮

         <asp:Button ID="btnSubmit" runat="server" CssClass ="btn btn- 
          success" Text="List" OnClientClick="getLatLng()" 
           OnClick="btnSubmit_Click"/>

后端代码

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        int lat = Convert.ToInt32(hiddenlat.Value);
        int lng = Convert.ToInt32(hiddenlng.Value);
        ........

          //Pushing of data into database
          uploadDao.listitem(user, date, item, rtype, ptype, paper, metal, 
           batt, elec, weight, desc, add, images[0], images[1], images[2], 
          images[3], unitno, postalcode, qty, district, Convert.ToInt32(lat), 
           Convert.ToInt32(lng));

            Response.Redirect("SellerListing.aspx?user=" + user);
    }

[更新] 当我在地址解析功能内设置Hiddenfield的值时,HiddenFields内部的值是未定义的。我可以知道为什么它没有定义吗?我尝试了Console.log的纬度和经度,都向我返回了一个值。

2 个答案:

答案 0 :(得分:0)

首先,您需要测试geocode函数。要测试geocode返回latitudelongitude,您需要将其登录到控制台,如下所示。

function getLatLng(){
    //... your code.
    var latitude = results[0].geometry.location.lat();
    var longitude = results[0].geometry.location.lng();

    console.log("Latitude:" + latitude + ' and Longtitude:' + longtitude );


    //Return false in getLatLng()
    return false;

}

答案 1 :(得分:0)

HTML

<input type="text"  id="txtAddress" />
<input type="button"  value="Get Lat/Long"  id="btnGetLatLong"/>

<asp:Button Text="Save" runat="server" ID="btnSaveOnSever"  OnClick="btnSaveOnSever_Click" />

<asp:HiddenField   runat="server" ID="hdnLat" ClientIDMod="static"/>
<asp:HiddenField   runat="server" ID="hdnLong" ClientIDMod="static" />

JavaScript

    $('#btnGetLatLong').click(function() {

        var geocoder = new google.maps.Geocoder();
        var address = $('#txtAddress').val();

        geocoder.geocode( { 'address': address}, function(results, status) {

            if (status == google.maps.GeocoderStatus.OK) {
            var latitude = results[0].geometry.location.lat();
            var longitude = results[0].geometry.location.lng();

                $('#hdnLat').val(latitude);
                $('#hdnLong').val(longitude);
                alert("Success");
            } else {
                alert("faild");
            } 
        }); 

    });

服务器端

protected void btnSaveOnSever_Click(object sender, EventArgs e)
{
    decimal lat = Convert.ToDecimal(hdnLat.Value);
    decimal lng = Convert.ToDecimal(hdnLong.Value);
    ........

      //Pushing of data into database
      uploadDao.listitem(user, date, item, rtype, ptype, paper, metal,
       batt, elec, weight, desc, add, images[0], images[1], images[2],
      images[3], unitno, postalcode, qty, district, lat,
       lng);

    Response.Redirect("SellerListing.aspx?user=" + user);
}