Javascript 谷歌地图API加载问题。需要技术解释。答案应该很简单
想想这个。装载问题背后的技术解释是什么Javascript 谷歌地图API加载问题。需要技术解释。答案应该很简单,javascript,html,css,facebook,google-maps-api-3,Javascript,Html,Css,Facebook,Google Maps Api 3,想想这个。装载问题背后的技术解释是什么 index.php <!DOCTYPE html> <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'> <head> <meta http-equiv='content-type' content='text/html;charset=utf-8' /> <meta name='description
index.php
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<meta http-equiv='content-type' content='text/html;charset=utf-8' />
<meta name='description' content='test' />
<title>test</title>
<style type='text/css'>
@import 'index.css';
</style>
</head>
<body class='njs'>
<div id='fb-root'></div>
<div id='map'></div>
<div id='mapR'></div>
<div class='fb-like' data-href='https://developers.facebook.com/docs/plugins/' data-send='true' data-width='450' data-show-faces='true'></div>
<script type='text/javascript' src='//connect.facebook.net/en_US/all.js'></script>
<script type='text/javascript' src='//maps.google.com/maps/api/js?sensor=true'></script>
<script type='text/javascript' src='index.js'></script>
</body>
</html>
index.js
//<![CDATA[
var pre = onload;
onload = function(){
if(pre)pre();
var doc = document, bod = doc.body, nav = navigator, IE = parseFloat(nav.appVersion.split('MSIE')[1]), geo = nav.geolocation, g = google.maps;
bod.className = 'js';
function gteIE(version, className){
if(IE >= version)bod.className = className;
}
function E(e){
return doc.getElementById(e);
}
var m = E('map'), mR = E('mapR');
function geocoderErrors(r){
var gs = g.GeocoderStatus, p;
switch(r){
case gs.OVER_QUERY_LIMIT:
p = 'You have exceeded your query limit.';
break;
case gs.REQUEST_DENIED:
p = 'Access denied.';
break;
case gs.INVALID_REQUEST:
p = 'Your request was invalid.';
break;
default:
p = 'No results were found for your request.';
}
mR.innerHTML = p;
}
function geolocationErrors(r){
var gl = 'Geolocation ', p;
switch(r.code){
case r.PERMISSION_DENIED:
p = gl+'Permission Denied.';
break;
case r.TIMEOUT:
p = gl+'Timed Out.';
break;
case r.UNKNOWN_ERROR:
p = 'An unknown '+gl+'error has occurred.';
break;
default:
p = gl+'Position Unavailable.';
}
mR.innerHTML = p;
}
if(!geo || !nav.onLine){
mR.innerHTML = 'Your Browser does not support Geolocation.';
}
else if(FB && g){
var map = new g.Map(m, {center: new g.LatLng(47.6065495, -122.3328983), zoom:8}), cds, lat, lng;
console.log(g); console.log(map);
geo.watchPosition(function(p){
cds = p.coords; lat = cds.latitude; lng = cds.longitude;
map.setCenter(new g.LatLng(lat, lng));
}, geolocationErrors, {enableHighAccuracy: true});
}
}
//]]>
/=version)bod.className=className;
}
职能E(E){
返回单据getElementById(e);
}
var m=E('map'),mR=E('mapR');
功能地理编码器错误(r){
var gs=g.GeocoderStatus,p;
开关(r){
案例gs.超过查询限制:
p='您已超过查询限制';
打破
案例gs.U请求被拒绝:
p='访问被拒绝';
打破
案例gs.U请求无效:
p='您的请求无效';
打破
违约:
p='未找到您的请求的结果';
}
mR.innerHTML=p;
}
函数地理定位错误(r){
var gl=‘地理位置’,p;
开关(r代码){
案例r.许可被拒绝:
p=gl+“权限被拒绝”;
打破
案例r.超时:
p=gl+“超时”;
打破
案例r.未知错误:
p='发生未知'+gl+'错误';
打破
违约:
p=gl+“位置不可用”;
}
mR.innerHTML=p;
}
如果(!geo | |!导航在线){
mR.innerHTML='您的浏览器不支持地理位置';
}
其他如果(FB&g){
var-map=newg.map(m,{中心:newg.LatLng(47.6065495,-122.3328983),zoom:8}),cds,lat,lng;
console.log(g);console.log(map);
地理观察位置(功能(p){
cds=p.coords;lat=cds.latitude;lng=cds.latitude;
地图设置中心(新g.LatLng(lat,lng));
},地理位置错误,{enableHighAccurance:true});
}
}
//]]>
您在设置中心时忘记了,您需要设置初始位置的缩放级别。:)
newg.Map(m,{zoom:8,center:newg.LatLng(47.6065495,-122.3328983)})
简单的时候你是对的。当你说“问题”时,你的意思是看不到任何加载?是的,我更新了小提琴。你有一大堆重命名,这只会使你的代码更难让人阅读。我发现在实例化
google.maps.Map
时缺少了新的
,但您已经修复了它。我无法发现这个问题,尽管我确实在控制台中收到了一个未捕获的RangeError:当我使用鼠标滚轮进行缩放时,超过了最大调用堆栈大小错误。我没有看到地图或错误,但我看到地图应该位于的灰色位置。看看Firebug中的控制台。我有这些对象。上面显示的代码显示修复。谢谢。现在我知道这是必须的。我想他们会有一些默认的缩放。
//<![CDATA[
var pre = onload;
onload = function(){
if(pre)pre();
var doc = document, bod = doc.body, nav = navigator, IE = parseFloat(nav.appVersion.split('MSIE')[1]), geo = nav.geolocation, g = google.maps;
bod.className = 'js';
function gteIE(version, className){
if(IE >= version)bod.className = className;
}
function E(e){
return doc.getElementById(e);
}
var m = E('map'), mR = E('mapR');
function geocoderErrors(r){
var gs = g.GeocoderStatus, p;
switch(r){
case gs.OVER_QUERY_LIMIT:
p = 'You have exceeded your query limit.';
break;
case gs.REQUEST_DENIED:
p = 'Access denied.';
break;
case gs.INVALID_REQUEST:
p = 'Your request was invalid.';
break;
default:
p = 'No results were found for your request.';
}
mR.innerHTML = p;
}
function geolocationErrors(r){
var gl = 'Geolocation ', p;
switch(r.code){
case r.PERMISSION_DENIED:
p = gl+'Permission Denied.';
break;
case r.TIMEOUT:
p = gl+'Timed Out.';
break;
case r.UNKNOWN_ERROR:
p = 'An unknown '+gl+'error has occurred.';
break;
default:
p = gl+'Position Unavailable.';
}
mR.innerHTML = p;
}
if(!geo || !nav.onLine){
mR.innerHTML = 'Your Browser does not support Geolocation.';
}
else if(FB && g){
var map = new g.Map(m, {center: new g.LatLng(47.6065495, -122.3328983), zoom:8}), cds, lat, lng;
console.log(g); console.log(map);
geo.watchPosition(function(p){
cds = p.coords; lat = cds.latitude; lng = cds.longitude;
map.setCenter(new g.LatLng(lat, lng));
}, geolocationErrors, {enableHighAccuracy: true});
}
}
//]]>