在ASP.NET母版谷歌地图API:为什么留空白? [英] Google Maps API in ASP.NET Masterpage: why it stays blank?
问题描述
这个简单的例子Visual Studio的本地主机内开展工作时,在纯HTML:端口服务器
<!DOCTYPE HTML>
< HTML和GT;
< HEAD>
< META NAME =视CONTENT =初始规模= 1.0,用户可扩展性=无/>
<风格类型=文/ CSS>
HTML {身高:100%}
车身高度{:100%;保证金:0像素;填充:0像素}
#map_canvas {身高:100%}
< /风格>
<脚本类型=文/ JavaScript的
SRC =http://maps.google.com/maps/api/js?sensor=true>
< / SCRIPT>
<脚本类型=文/ JavaScript的>
函数初始化(){
VAR经纬度=新google.maps.LatLng(-34.397,150.644);
VAR myOptions = {
变焦:8,
中心:经纬度,
mapTypeId设为:google.maps.MapTypeId.ROADMAP
};
VAR地图=新google.maps.Map(的document.getElementById(map_canvas的)
myOptions);
}< / SCRIPT>
< /头>
<身体的onload =初始化()>
< DIV ID =map_canvas的风格=宽度:100%;身高:100%>< / DIV>
< /身体GT;
< / HTML>
我试图适应在Visual Studio中的ASP.NET 2010默认模板,虽然它运行它不会显示任何地图,为什么?
母版:
<%@主语言=C#AutoEventWireup =真codeFILE =Site.master.cs继承=SITEMASTER%GT;<!DOCTYPE HTML>
< HTML和GT;
<头=服务器>
<标题>< /标题>
<链接HREF =〜/风格/的site.css的rel =stylesheet属性类型=文/ CSS/>
<风格类型=文/ CSS>
HTML {身高:100%}
车身高度{:100%;保证金:0像素;填充:0像素}
#map_canvas {身高:100%}
< /风格>
< META NAME =视CONTENT =初始规模= 1.0,用户可扩展性=无/>
<脚本类型=文/ JavaScript的
SRC =http://maps.google.com/maps/api/js?sensor=true>
< / SCRIPT>
<脚本类型=文/ JavaScript的>
函数初始化(){
VAR经纬度=新google.maps.LatLng(-34.397,150.644);
VAR myOptions = {
变焦:8,
中心:经纬度,
mapTypeId设为:google.maps.MapTypeId.ROADMAP
};
VAR地图=新google.maps.Map(的document.getElementById(map_canvas的)
myOptions);
} < / SCRIPT>
< ASP:的ContentPlaceHolder ID =HeadContent=服务器> < / ASP:&的ContentPlaceHolder GT;
< /头>
<身体的onload =初始化()>
<形式=服务器>
< DIV CLASS =页>
< DIV CLASS =头>
< DIV CLASS =标题>
< H1>
谷歌地图在ASP.NET
< / H1>
< / DIV>
< DIV CLASS =loginDisplay>
< ASP:LoginView ID =HeadLoginView=服务器的EnableViewState =假>
< AnonymousTemplate>
[< A HREF =〜/帐号/的Login.aspxID =HeadLoginStatus=服务器>登录上述< / A> ]
< / AnonymousTemplate>
<&显示LoggedInTemplate GT;
欢迎<跨度类=大胆>< ASP:LoginName将ID =HeadLoginName=服务器/>< / SPAN>!
[< ASP:LoginStatus ID =HeadLoginStatus=服务器LogoutAction =重定向LogoutText =注销LogoutPageUrl =〜//> ]
< /&显示LoggedInTemplate GT;
< / ASP:LoginView>
< / DIV>
< DIV CLASS =明确hideSkiplink>
< ASP:菜单ID =NavigationMenu=服务器的CssClass =菜单的EnableViewState =假IncludeStyleBlock =false的方向=横向>
<项目>
< ASP:菜单项NavigateUrl =〜/ Default.aspx的文本=家/>
< ASP:菜单项NavigateUrl =〜/ About.aspx文本=关于/>
< /项目>
< / ASP:菜单>
< / DIV>
< / DIV>
< DIV CLASS =主>
< ASP:的ContentPlaceHolder ID =日程地址搜索Maincontent=服务器/>
< / DIV>
< DIV CLASS =清除>
< / DIV>
< / DIV>
< DIV CLASS =页脚> < / DIV>
< /表及GT;
< /身体GT;
< / HTML>
Default.aspx的:
<%@页标题=主页LANGUAGE =C#的MasterPageFile =〜/ Site.master母AutoEventWireup =真
codeFILE =Default.aspx.cs继承=_默认%GT;< ASP:内容ID =HeaderContent=服务器ContentPlaceHolderID =HeadContent>< / ASP:内容>
< ASP:内容ID =的BodyContent=服务器ContentPlaceHolderID =日程地址搜索Maincontent> < DIV ID =map_canvas的风格=宽度:100%;身高:100%>< / DIV>< / ASP:内容>
更新:这是呈现的HTML
<!DOCTYPE HTML>
< HTML和GT;
< HEAD><标题>
首页
< /标题><链接HREF =样式/的site.css的rel =stylesheet属性类型=文/ CSS/>
<风格类型=文/ CSS>
HTML {身高:100%}
车身高度{:100%;保证金:0像素;填充:0像素}
#map_canvas {身高:100%}
< /风格>
< META NAME =视CONTENT =初始规模= 1.0,用户可扩展性=无/>
<脚本类型=文/ JavaScript的 SRC =http://maps.google.com/maps/api/js?sensor=true>
< / SCRIPT>
<脚本类型=文/ JavaScript的>
函数初始化(){
VAR经纬度=新google.maps.LatLng(-34.397,150.644);
VAR myOptions = {
变焦:8,
中心:经纬度,
mapTypeId设为:google.maps.MapTypeId.ROADMAP
};
VAR地图=新google.maps.Map(的document.getElementById(map_canvas的)
myOptions);
} < / SCRIPT>
< /头>
<身体的onload =初始化()>
<形式方法=邮报行动=的Default.aspxID =ctl01>
< DIV CLASS =aspNetHidden>
<输入类型=隐藏的名字=__ VIEWSTATEID =__ VIEWSTATEVALUE =/ wEPDwUKMTY1NDU2MTA1MmRkgEGBoemMtm + / + V6V m9lmIvRj4NCUaPh / xvbFFRPTsmc =/>
< / DIV>
<脚本src=\"/googlemapstutorial/WebResource.axd?d=pX2KOH15DXBIWd9F3pw0pYRvxH0rCs_7BzgxTRUKsZkV8iILrBf16Um3jfikb78HXD5CWcorG2sj456pwVRsUev4lKFhNxwLEsZ0G3MsXkw1&t=634222671270572046\"类型=文/ JavaScript的>< / SCRIPT>
< DIV CLASS =页>
< DIV CLASS =头>
< DIV CLASS =标题>
< H1>
谷歌地图在ASP.NET
< / H1>
< / DIV>
< DIV CLASS =loginDisplay> [< A HREF =帐户/为Login.aspxID =HeadLoginView_HeadLoginStatus>登录上述< / A> ] < / DIV>
< DIV CLASS =明确hideSkiplink>
< A HREF =#NavigationMenu_SkipLink>< IMG ALT =跳过导航链接 src=\"/googlemapstutorial/WebResource.axd?d=TJBKVc8nekHCgPywjGbDmMgRlrAm9FIu3FELc6xCCTlRxYfnY8nfoPOyAs8B8fawdRaonWVsHF9mLU3lY2PCkgjBIN2S1Hne4nX1WfWtaN01&t=634222671270572046\" WIDTH =0HEIGHT =0的风格=边界宽度:0像素; />&下; / A>&下;股利类=菜单的id =NavigationMenu>
< UL类=1级>
<李><一类=1级的href =Default.aspx的>首页< / A>< /李><李><一类=1级的href =About.aspx >关于< / A>< /李>
< / UL>
< / DIV><一个ID =NavigationMenu_SkipLink>< / A>
< / DIV>
< / DIV>
< DIV CLASS =主>
< DIV ID =map_canvas的风格=宽度:100%;身高:100%>< / DIV>
< / DIV>
< DIV CLASS =清除>
< / DIV>
< / DIV>
< DIV CLASS =页脚> < / DIV><脚本类型=文/ JavaScript的'>新建Sys.WebForms.Menu({元素:'NavigationMenu',disappearAfter:500,方向:水平,一个tabIndex:0,禁用:假});< / SCRIPT&GT ;< /表及GT;
< /身体GT;
< / HTML>
谷歌是所有JavaScript,因此它在一个母版页的事实不应该的问题,除非你有本地路径的问题,我没有看到。
我将使用Firefox的错误控制台,看看是否有任何Javascript错误页面加载时。
修改
我认为这是一些奇怪的标记嵌套的问题,但它实际上是您正在使用的百分比为您维度的事实。 '100%'是指使用填充封闭容器空间,但如果容器是空的,我们没有得到一个尺寸。如果你设置你的地图格到一个固定的大小,你会看到你的地图。
This simple example works in pure html when launching within visual studio localhost:port server
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
#map_canvas { height: 100% }
</style>
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=true">
</script>
<script type="text/javascript">
function initialize() {
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>
I tried to adapt to asp.net under visual studio 2010 default template and though it runs it doesn't show any map why ?
Masterpage:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Site.master.cs" Inherits="SiteMaster" %>
<!DOCTYPE html>
<html>
<head runat="server">
<title></title>
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
#map_canvas { height: 100% }
</style>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=true">
</script>
<script type="text/javascript">
function initialize() {
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
}
</script>
<asp:ContentPlaceHolder ID="HeadContent" runat="server">
</asp:ContentPlaceHolder>
</head>
<body onload="initialize()">
<form runat="server">
<div class="page">
<div class="header">
<div class="title">
<h1>
Google Maps in ASP.NET
</h1>
</div>
<div class="loginDisplay">
<asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
<AnonymousTemplate>
[ <a href="~/Account/Login.aspx" ID="HeadLoginStatus" runat="server">Log In</a> ]
</AnonymousTemplate>
<LoggedInTemplate>
Welcome <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" /></span>!
[ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/"/> ]
</LoggedInTemplate>
</asp:LoginView>
</div>
<div class="clear hideSkiplink">
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
<Items>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"/>
<asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/>
</Items>
</asp:Menu>
</div>
</div>
<div class="main">
<asp:ContentPlaceHolder ID="MainContent" runat="server"/>
</div>
<div class="clear">
</div>
</div>
<div class="footer">
</div>
</form>
</body>
</html>
Default.aspx:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<div id="map_canvas" style="width:100%; height:100%"></div>
</asp:Content>
Update: this is the rendered html
<!DOCTYPE html>
<html>
<head><title>
Home Page
</title><link href="Styles/Site.css" rel="stylesheet" type="text/css" />
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
#map_canvas { height: 100% }
</style>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript"
src="http://maps.google.com/maps/api/js?sensor=true">
</script>
<script type="text/javascript">
function initialize() {
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
}
</script>
</head>
<body onload="initialize()">
<form method="post" action="default.aspx" id="ctl01">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTY1NDU2MTA1MmRkgEGBoemMtm+/v6V+m9lmIvRj4NCUaPh/xvbFFRPTsmc=" />
</div>
<script src="/googlemapstutorial/WebResource.axd?d=pX2KOH15DXBIWd9F3pw0pYRvxH0rCs_7BzgxTRUKsZkV8iILrBf16Um3jfikb78HXD5CWcorG2sj456pwVRsUev4lKFhNxwLEsZ0G3MsXkw1&t=634222671270572046" type="text/javascript"></script>
<div class="page">
<div class="header">
<div class="title">
<h1>
Google Maps in ASP.NET
</h1>
</div>
<div class="loginDisplay">
[ <a href="Account/Login.aspx" id="HeadLoginView_HeadLoginStatus">Log In</a> ]
</div>
<div class="clear hideSkiplink">
<a href="#NavigationMenu_SkipLink"><img alt="Skip Navigation Links" src="/googlemapstutorial/WebResource.axd?d=TJBKVc8nekHCgPywjGbDmMgRlrAm9FIu3FELc6xCCTlRxYfnY8nfoPOyAs8B8fawdRaonWVsHF9mLU3lY2PCkgjBIN2S1Hne4nX1WfWtaN01&t=634222671270572046" width="0" height="0" style="border-width:0px;" /></a><div class="menu" id="NavigationMenu">
<ul class="level1">
<li><a class="level1" href="Default.aspx">Home</a></li><li><a class="level1" href="About.aspx">About</a></li>
</ul>
</div><a id="NavigationMenu_SkipLink"></a>
</div>
</div>
<div class="main">
<div id="map_canvas" style="width:100%; height:100%"></div>
</div>
<div class="clear">
</div>
</div>
<div class="footer">
</div>
<script type='text/javascript'>new Sys.WebForms.Menu({ element: 'NavigationMenu', disappearAfter: 500, orientation: 'horizontal', tabIndex: 0, disabled: false });</script></form>
</body>
</html>
Google is all Javascript, so the fact it's in a Master page shouldn't matter unless you have local path issues, which I don't see.
I would use Firefox's Error Console to see if there are any Javascript errors when the page loads.
EDIT
I thought it was some weird tag nesting issue, but it's actually the fact that you're using percentages for your dimensions. '100%' means use fill the enclosing containers space, but if the container is empty we don't get a size. If you set your map div to a fixed size, you will see your map.
这篇关于在ASP.NET母版谷歌地图API:为什么留空白?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!