Долгота и широта не назначаются скрытым полям [обновления] - PullRequest
0 голосов
/ 02 апреля 2019

[обновление] Я пытаюсь получить широту и долготу с помощью геокодирования на бэкэнд (.cs) файла aspx при отправке в базу данных. Однако HiddenFields не присваивается никому, когда я пытался console.log внутри функций Geocode, что дает мне неопределенное значение.

Я пробовал много решений, но ни одно из них не сработало или вопрос закончился на полпути без каких-либо решений. Я пытался использовать:
1. Request.Form [Latitude.UniqueID] 2. Использование SetTimeOut (для функции геокодирования) 3. Использование .Value / .Value.toString () из hiddenField в бэкэнде

К сожалению, ничего из этого не сработало.

Функции геокодирования

        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 внутри функции Geocoding, значения внутри HiddenFields не определены. Могу ли я знать, почему это не определено? Я попытался Console.log и широта и долгота, и оба возвращают мне значение.

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

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);
}
0 голосов
/ 03 апреля 2019

Сначала вам нужно проверить функцию geocode. Чтобы проверить, geocode возвращает latitude и longitude, вам необходимо войти в консоль, как показано ниже.

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;

}
...