0

显然,如果谷歌地图被称为“map_canvas”,它只会显示在 div 中,这给我带来了一些问题。无需过多介绍,我的应用程序是基于 Rails 的,渲染了不同的页面,在一个页面上我想调用 initialize_google_maps() 而在另一页上我想调用 initialize_google_maps2()

但是我怎样才能区分这两个不同的页面呢?有任何想法吗?例如,我正在使用下面的代码,并且在带有 map_canvas2 的页面中,我认为嵌套 map_canvas 很聪明,例如:

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

但是当我这样做时,这两个函数都会被调用 - initialize_google_maps(); 和initialize_google_maps2();我的代码是:

        if ($("#map_canvas").length)
        {

            initialize_google_maps();
        }

    if ($("#map_canvas2").length)
    {

      initialize_google_maps2();
    }

任何想法如何区分它们?谢谢。

我的初始化函数类似于(getElementById 必须被称为'map_canvas',从我读过的内容来看):

function initialize_google_maps() {

    console.log('map canvas again'); 
    var currentlatlng = new google.maps.LatLng(map_latitude, map_longitude);
    var zoom = 10;
    var myOptions = {
        zoom: zoom,
        center: currentlatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP, // ROADMAP, SATELLITE, HYBRID
        streetViewControl: false
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    console.log("definition of map"); 

    var marker = new google.maps.Marker({map: map, position: currentlatlng, icon:{oppacity:0}});
   // map.setCenter(currentlatlng);
   // map.setZoom(zoom);
     console.log("definition of marker"); 

    var circle = new google.maps.Circle({
        map: map,
        fillOpacity: 0,
        strokeWeight: 2,
        strokeOpacity: 0.7,
        radius: 10000,
    });
    console.log("definition of circle"); 
    circle.bindTo('center', marker, 'position');
console.log("circle2");
  }
4

2 回答 2

1

它应该是:

if ($("#map_canvas").length > 0)

于 2013-05-03T12:06:19.820 回答
1

如果您查看下面的行(“map_canvas”),您可以将其更改为您需要的任何名称。只需确保在您的 div 中它与您在该行中更改的内容相匹配。

 map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    console.log("definition of map"); 
于 2013-05-03T11:37:05.890 回答