Asp.net GoogleMapsAPI3如何调用initialize而不将其放入Body onload中
我正在使用GoogleMapsAPI,并复制了这些示例,最后得到了一个名为“initialize”的函数,该函数是从body onload调用的 我在几个不同的用户控件中使用地图,这些控件位于内容占位符中,因此主体标记位于母版页中 有没有一种方法可以直接在usercontrol中调用initialize,而不必在母版页上放置onload? 理想情况下,我希望我的用户控件是一个独立的控件,我可以直接插入页面,而无需尝试访问母版页正文 我尝试从用户控件的页面加载调用Initialize函数(通过添加启动脚本),但映射没有出现 有什么建议吗 我的代码:Asp.net GoogleMapsAPI3如何调用initialize而不将其放入Body onload中,asp.net,google-maps,google-maps-api-3,Asp.net,Google Maps,Google Maps Api 3,我正在使用GoogleMapsAPI,并复制了这些示例,最后得到了一个名为“initialize”的函数,该函数是从body onload调用的 我在几个不同的用户控件中使用地图,这些控件位于内容占位符中,因此主体标记位于母版页中 有没有一种方法可以直接在usercontrol中调用initialize,而不必在母版页上放置onload? 理想情况下,我希望我的用户控件是一个独立的控件,我可以直接插入页面,而无需尝试访问母版页正文 我尝试从用户控件的页面加载调用Initialize函数(通过添加
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">/script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
var map;
var geocoder;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(51.8052184317649, -4.965819906250006);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
$.ajax({
type: "POST",
url: "/GoogleMapsService.asmx/GetPointers",
contentType: "application/json; charset=utf-8",
dataType: "json",
beforeSend: function () {
$(".loadingData").html("<p>Loading data..</p>");
},
complete: function () {
$(".loadingData").html("");
},
cache: true,
success: mapPoints,
error: onError
});
}
function onError(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(xhr.responseText);
}
function mapPoints(response) {
if (response.d != null) {
if (response.d.length > 0) {
for (var i = 0; i < response.d.length; i++) {
plotOnMap(response.d[i].Id, response.d[i].Name,
response.d[i].Lat, response.d[i].Long,
response.d[i].ShortDesc)
}
}
}
}
/script>
var映射;
var地理编码器;
函数初始化(){
geocoder=新的google.maps.geocoder();
var latlng=新的google.maps.latlng(51.8052184317649,-4.965819906250006);
变量myOptions={
缩放:8,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
$.ajax({
类型:“POST”,
url:“/GoogleMapsService.asmx/GetPointers”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
beforeSend:函数(){
$(“.loadingData”).html(“加载数据..”;
},
完成:函数(){
$(“.loadingData”).html(“”);
},
是的,
成功:mapPoints,
错误:onError
});
}
函数onError(xhr、ajaxOptions、thrownError){
警报(xhr.状态);
警报(xhr.responseText);
}
功能映射点(响应){
if(response.d!=null){
如果(响应长度>0){
对于(变量i=0;i
在我的测试母版页上:
<body onload="initialize()">
<form runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"></asp:ScriptManager>
<asp:ContentPlaceHolder ID="MainContent" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
我就是这样做的:(这个脚本可以在usercontrol中使用)
$(文档).ready(函数(){
如果($('#映射画布')。长度!=0){
//谷歌地图的东西在这里
}
});
谢谢你的回答,但我最终还是这样做了:
<script type="text/javascript">
window.onload = function () {
initialize();
}
</script>
window.onload=函数(){
初始化();
}
您能帮我建立这个链接吗
<script type="text/javascript">
window.onload = function () {
initialize();
}
</script>