Javascript 将经度和纬度传递到Google地图初始化函数

Javascript 将经度和纬度传递到Google地图初始化函数,javascript,function,google-maps-api-3,Javascript,Function,Google Maps Api 3,我正在尝试将经度和纬度传递给GoogleMapsJavaScriptV3API。下面的代码应该从开关中获取googleLatLong变量,然后将其传递给GoogleInitialize()函数。但是,目前无法在initialize()函数中访问googleLatLong变量。我怎样才能通过它 提前谢谢 头部的JavaScript: <script type="text/javascript"> //function to get a parameter from the query

我正在尝试将经度和纬度传递给GoogleMapsJavaScriptV3API。下面的代码应该从开关中获取googleLatLong变量,然后将其传递给GoogleInitialize()函数。但是,目前无法在initialize()函数中访问googleLatLong变量。我怎样才能通过它

提前谢谢

头部的JavaScript:

<script type="text/javascript"> 
//function to get a parameter from the query string
var queryString = function(){
  var s = window.location.search.substr(1),
      p = s.split(/\&/),
      l = p.length, 
      kv, r = {};
  if(l === 0){return false;}
    while(l--){
      kv = p[l].split(/\=/);
      r[kv[0]] = kv[1] || true;
    }
    return r;
}();

//get params from the url
var storeCode = queryString.store;

//switch page params based on the store code
switch(storeCode) {
    case 'POO746':
        var storeName = 'Poole';
        var googleLatLong = '50.736129,-1.988229';
        var trafficURL = 'http://hatrafficinfo.dft.gov.uk/feeds/rss/CurrentAndFutureEvents/South%20West.xml';
        break;
    case 'BRS464':
        var storeName = 'Bognor Regis';
        var googleLatLong = '50.798991,-0.667444';
        var trafficURL = 'http://hatrafficinfo.dft.gov.uk/feeds/rss/CurrentAndFutureEvents/South%20East.xml';
        break;
}    

</script>

//函数从查询字符串中获取参数
var queryString=函数(){
var s=window.location.search.substr(1),
p=s.split(/\&/),
l=p.长度,
kv,r={};
如果(l==0){返回false;}
而(l--){
kv=p[l]。分裂(/\=/);
r[kv[0]]=kv[1]| |真;
}
返回r;
}();
//从url获取参数
var storeCode=queryString.store;
//根据存储代码切换页面参数
开关(存储代码){
案件‘POO746’:
var storeName='Poole';
变量googleLatLong='50.736129,-1.988229';
var-trafficURLhttp://hatrafficinfo.dft.gov.uk/feeds/rss/CurrentAndFutureEvents/South%20West.xml';
打破
案例“BRS464”:
var storeName='Bognor Regis';
变量googleLatLong='50.798991,-0.667444';
var-trafficURLhttp://hatrafficinfo.dft.gov.uk/feeds/rss/CurrentAndFutureEvents/South%20East.xml';
打破
}    
主体中的JavaScript:

<script type="text/javascript">
var map

function initialize() {
    var store = new google.maps.LatLng(googleLatLong);
    var myOptions = {
        zoom:12,
        mapTypeId: google.maps.MapTypeId.HYBRID,
        disableDefaultUI: true,
        center: store
    }   
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    var trafficLayer = new google.maps.TrafficLayer();
    trafficLayer.setMap(map);

}

window.onload = function () {
    initialize();
}
</script>


    <div id="trafficMap">
        <div id="map_canvas"></div>
</div>

变量映射
函数初始化(){
var store=new google.maps.LatLng(googleLatLong);
变量myOptions={
缩放:12,
mapTypeId:google.maps.mapTypeId.HYBRID,
disableDefaultUI:true,
中心:商店
}   
map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
var trafficLayer=new google.maps.trafficLayer();
trafficLayer.setMap(地图);
}
window.onload=函数(){
初始化();
}

将其设置为页面的全局,这样您将拥有以下全局:

var storeCode = queryString.store;
var googleLatLong;
var map;

在初始化函数中解析查询字符串

<script type="text/javascript">
var map

  //function to get a parameter from the query string
  var queryString = function(){
    var s = window.location.search.substr(1),
      p = s.split(/\&/),
      l = p.length, 
      kv, r = {};
    if(l === 0){return false;}
      while(l--){
        kv = p[l].split(/\=/);
        r[kv[0]] = kv[1] || true;
      }
      return r;
  }();

function initialize() {


//get params from the url
var storeCode = queryString.store;

//switch page params based on the store code
switch(storeCode) {
    case 'POO746':
        var storeName = 'Poole';
        var googleLatLong = new google.maps.LatLng(50.736129,-1.988229);
        var trafficURL = 'http://hatrafficinfo.dft.gov.uk/feeds/rss/CurrentAndFutureEvents/South%20West.xml';
        break;
    case 'BRS464':
        var storeName = 'Bognor Regis';
        var googleLatLong = new google.maps.LatLng(50.798991,-0.667444);
        var trafficURL = 'http://hatrafficinfo.dft.gov.uk/feeds/rss/CurrentAndFutureEvents/South%20East.xml';
        break;
}




    var store = googleLatLong;
    var myOptions = {
        zoom:12,
        mapTypeId: google.maps.MapTypeId.HYBRID,
        disableDefaultUI: true,
        center: store
    }   
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

    var trafficLayer = new google.maps.TrafficLayer();
    trafficLayer.setMap(map);

}

window.onload = function () {
    initialize();
}
</script>

变量映射
//函数从查询字符串中获取参数
var queryString=函数(){
var s=window.location.search.substr(1),
p=s.split(/\&/),
l=p.长度,
kv,r={};
如果(l==0){返回false;}
而(l--){
kv=p[l]。分裂(/\=/);
r[kv[0]]=kv[1]| |真;
}
返回r;
}();
函数初始化(){
//从url获取参数
var storeCode=queryString.store;
//根据存储代码切换页面参数
开关(存储代码){
案件‘POO746’:
var storeName='Poole';
var googleLatLong=new google.maps.LatLng(50.736129,-1.988229);
var-trafficURLhttp://hatrafficinfo.dft.gov.uk/feeds/rss/CurrentAndFutureEvents/South%20West.xml';
打破
案例“BRS464”:
var storeName='Bognor Regis';
var googleLatLong=new google.maps.LatLng(50.798991,-0.667444);
var-trafficURLhttp://hatrafficinfo.dft.gov.uk/feeds/rss/CurrentAndFutureEvents/South%20East.xml';
打破
}
var store=googleLatLong;
变量myOptions={
缩放:12,
mapTypeId:google.maps.mapTypeId.HYBRID,
disableDefaultUI:true,
中心:商店
}   
map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
var trafficLayer=new google.maps.trafficLayer();
trafficLayer.setMap(地图);
}
window.onload=函数(){
初始化();
}

我最终通过拆分经度和纬度解决了这个问题。为经度和纬度创建单独的变量。而不是

 var googleLatLong = '50.736129,-1.988229';
我现在有:

 var glat = '50.736129';
 var glong = '-1.988229';
在谷歌地图初始化功能中,它现在看起来如下所示:

 var store = new google.maps.LatLng(glat,glong);

不太清楚为什么它不能与合并的经度和纬度变量一起工作,但现在,进行此更改使代码工作。

您所说的“似乎不工作”是什么意思?我没有测试代码,只是修改了你的代码,你检查过javascript控制台吗?对不起,我没有注意到你更改了代码。你换了哪些部件?谢谢你的帮助。当我尝试这段代码时,地图仍然没有显示,然后我在页面上又出现了一个故障,因为trafficURL在页面下一步使用时未定义。我刚刚修复了发布代码中的两个问题。googleLatLong是一个字符串,它必须是google.maps.LatLng。既然它已经是一个google.maps.LatLng,商店只是它的一个副本。当你说让它成为页面的全局,你的意思是我把它放在哪里?我试着把它放在VarMap旁边,但它似乎并没有让map显示出来。把它放在任何函数之外。然后,所有函数都可以访问它(只要函数没有声明一个名称相同的变量,这将有效地隐藏全局变量)。另外,在尝试读取之前,请确保已指定该值。最后我解决了这个问题,请参见下面的答案。