[更新] 我试图在推入数据库时通过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的纬度和经度,都向我返回了一个值。
答案 0 :(得分:0)
首先,您需要测试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;
}
答案 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);
}