2

我正在使用 Twitter Bootstrap 并在模式中实现了谷歌地图,它动态地显示了生产者的位置。一切正常,除了标记不会居中。相反,它始终位于左上角(仅在滚动时可见)。

我在这里尝试了很多东西,但无法让它发挥作用。有人可以帮我吗?

html:

  <div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-header">
      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
      <h3 id="myModalLabel">Test</h3>
    </div>
    <div id="modal-left" class="modal-body left">
    </div>
    <div class="modal-body right">
      <div id="map"></div>
    </div>
  </div>
</div>
<div class="row span12">
  <div id="allProducers"></div>
</div>

相关的CSS:

#map {
  height: 300px;
  width: 300px;
}

.hide {
  display: none;
}

js:

function largeMap(latitude, longitude){
    var Latlng = new google.maps.LatLng(latitude, longitude);

    var Options = {
        zoom: 10,
        center: Latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var Map = new google.maps.Map(document.getElementById("map"), Options);

    var Marker = new google.maps.Marker({
        position: Latlng,
        map:Map,
        title:"The Map"
    });

    Marker.setMap(Map);
}

$('.modal-btn').click(function(){

    var producerId = $(this).attr('id');

    GetProducer(producerId, function(data) {
        var titel = data.name;

        $('#myModalLabel').html(titel);

        $('#myModal').on('shown', function () {
          google.maps.event.trigger(map, 'resize');
          map.setCenter(new google.maps.LatLng(data.longitude, data.latitude));
        })
    });
});

注意:我很想创建一个 jsFiddle,但因为我使用的是模式(包含在 Twitter Bootstrap 中),这可能是问题的一部分,它不起作用。

4

2 回答 2

4

基本上你需要访问Map对象(强烈建议只重用你的LatLng对象),你可以这样做:

var Map; 
var Markerlatlng

function largeMap(latitude, longitude){
  Markerlatlng= new google.maps.LatLng(latitude, longitude);

  var Options = {
    zoom: 10,
    center: Markerlatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };

  Map = new google.maps.Map(document.getElementById("map"), Options);

  var Marker = new google.maps.Marker({
    position: Markerlatlng,
    map:Map,
    title:"The Map"
  });

  Marker.setMap(Map);
}



$('.modal-btn').click(function(){

  var producerId = $(this).attr('id');

  GetProducer(producerId, function(data) {
    var titel = data.name;

    $('#myModalLabel').html(titel);

    $('#myModal').on('shown', function () {
      google.maps.event.trigger(Map, 'resize');
      Map.setCenter(Markerlatlng);
    })
  });
});
于 2012-12-17T22:36:20.667 回答
1

我认为你混合了这些情况:

 var Map = new google.maps.Map(document.getElementById("map"), Options);

 map.setCenter(new google.maps.LatLng(data.longitude, data.latitude));

试试这个

 map = new google.maps.Map(document.getElementById("map"), Options);

你的萤火虫/铬控制台没有任何问题吗?

于 2012-12-17T22:26:18.853 回答