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});
}
}
//]]>