Почему этот код не работает на странице содержимого?
Я пишу этот код в aspx.net, и он работает хорошо, но когда записываете на страницу контента, это не так. Кто-нибудь знает почему? Примечание: я использую элемент управления Artem GoogleMap, устанавливаю на него метку и затем получаю его местоположение.
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<artem:GoogleMap ID="GoogleMap1" runat="server"
EnableMapTypeControl="False" MapType="Roadmap" >
</artem:GoogleMap>
<artem:GoogleMarkers ID="GoogleMarkers1" runat="server"
TargetControlID="GoogleMap1" onclientpositionchanged="handlePositionChanged">
</artem:GoogleMarkers>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
<asp:HiddenField ID="Hidden1" runat="server" />
<asp:Button ID="Button2" runat="server" Text="Button2" onclick="Button2_Click" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" Text="Split" onclick="Button1_Click" />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
<script type="text/javascript">
var list = document.getElementById("Label1");
function handlePositionChanged(sender, e) {
printEvent("Position Changed", sender, e);
}
function printEvent(name, sender, e) {
var position = e.latLng || sender.markers[e.index].getPosition();
document.getElementById('Label1').innerHTML = position.lat();
document.getElementById('Label2').innerHTML = position.lng();
document.getElementById('<%= Hidden1.ClientID %>').value = position.lat();
}
</script>
protected void Page_Load(object sender, EventArgs e)
{
this.GoogleMap1.MapType = Artem.Google.UI.MapType.Roadmap;
this.GoogleMap1.Zoom = 12;
if (!Page.IsPostBack)
{
GoogleMaps.LocationServices.GoogleLocationService obj = new GoogleMaps.LocationServices.GoogleLocationService();
GoogleMaps.LocationServices.AddressData add = new GoogleMaps.LocationServices.AddressData();
add.City = "somewhere";
add.Country = "somewhere";
GoogleMaps.LocationServices.MapPoint mp = new GoogleMaps.LocationServices.MapPoint();
mp.Latitude = 29.6248771158687;
mp.Longitude = 52.5227701663971;
double x = mp.Latitude;
GoogleMaps.LocationServices.MapPoint pt = obj.GetLatLongFromAddress(add);
GoogleMap1.Latitude = mp.Latitude;
GoogleMap1.Longitude = mp.Longitude;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
TextBox2.Text = Hidden1.Value;
}
protected void Button2_Click(object sender, EventArgs e)
{
string add = TextBox1.Text;
GeoRequest request = new GeoRequest(add);
GeoResponse response = request.GetResponse();
GeoLocation location = response.Results[0].Geometry.Location;
double latitude = location.Latitude;
double longitude = location.Longitude;
GoogleMap1.Latitude = latitude;
GoogleMap1.Longitude = longitude;
Artem.Google.UI.Marker mk1 = new Artem.Google.UI.Marker();
mk1.Draggable = true;
mk1.Address = add;
GoogleMarkers1.Markers.Add(mk1);
}
Обновление: я изменяю эту часть кода, и она работает, но не знаю почему:
document.getElementById('<%= Label1.ClientID %>').innerHTML = position.lat();
1 ответ
Я думаю, что вам нужно добавить тег scriptmanager на главной странице и тег scriptmanagerproxy на текущей странице.