javascript - 多个 Google map ,其中一张 map 未加载

标签 javascript google-maps google-maps-api-3

我正在 MVC 5 中实现一个系统,用户可以从谷歌地图中选择坐标并保存它们,坐标存储到数据库中,然后应用程序中的单独页面检索坐标并显示 map 显示标记。

我的问题是,当一张 map 正常运行时,另一张 map 不会显示在单独的页面上。

这是我的 JavaScript 代码:

$(document).ready(function () {

    initialize();

});

function initialize() {

    var latlng = new google.maps.LatLng('@ViewBag.Latitude', '@ViewBag.Longitude');

    var myLatLng2 = new google.maps.LatLng(53.88484, -9.28484);

    var mapOptions = {
        center: latlng,
        zoom: 7,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };


    var mapOptions2 = {
        zoom: 5,
        center: myLatLng2,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };


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

    var map2 = new google.maps.Map(document.getElementById("map_canvas1"), mapOptions2);

    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        title: '@ViewBag.data'
    });

    var marker2 = new google.maps.Marker({
        map: map2,
        position: myLatLng2,
        draggable: true
    });

    new google.maps.event.addListener(marker2, 'drag', function () {
        var pos = marker2.getPosition();
        $("#Lat").val(pos.lat());
        $("#Lon").val(pos.lng());
    });


}

在我的第一个 View 中

  <div id="map_canvas" style="float:left; width: 600px; height: 250px; margin-top:15px; margin-bottom:20px; margin-left:30px;">

和其他 View

<div id="map_canvas1" style="float:left; width: 600px; height: 250px; margin-top:15px; margin-bottom:20px; margin-left:30px;"> 

我可以通过注释掉该行来使“map2”工作

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

反之亦然,但它们似乎不会并排运行, 当两者都未注释时,只有声明的第一个 var mapvar map2 似乎会运行, 任何帮助将不胜感激, 谢谢。

最佳答案

这是因为

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

很可能会出错。 map_canvas 不存在,因此永远不会到达下一行。如果您将其注释掉,那么第二个 View 将按预期工作。

调用 document.getElementById() 时,请确保在创建 map 之前该元素首先存在。

顺便说一句:这也意味着 map_canvas1 在您的第一个 View 中也不存在,所以也要小心。

试试这个:

var map_canvas = document.getElementById("map_canvas");
if (map_canvas)
    var map = new google.maps.Map(map_canvas, mapOptions);
var map_canvas1 = document.getElementById("map_canvas1");
if (map_canvas1)
    var map2 = new google.maps.Map(map_canvas1, mapOptions2);

关于javascript - 多个 Google map ,其中一张 map 未加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29993228/

相关文章:

javascript - JxBrowser 在自定义 ProtocolHandler 中获取帖子正文

javascript - 如果没有子元素,父元素应该隐藏

javascript - 使用 Icecast 移动到后备安装时音频停止播放

javascript - 获取多个输入字段的平均值(范围)

javascript - 使用 Google map 考虑交通情况的具有多个路径点的路线规划器

javascript - 如何在不使用 div 元素的情况下获得 google 搜索服务?

javascript - 将标记添加到谷歌地图,引用 map 但不重新实例化它

swift - 如何获取Marker的经纬度Swift

php - 谷歌地图 API : Blank page (No map)

javascript - 尝试在 Google Map V3 中绘制超过 10 个标记,而不使用地理编码