Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google maps v3-缩放到标记时出错_Javascript_Json_Google Maps_Asp.net Mvc 4_Google Maps Api 3 - Fatal编程技术网

Javascript Google maps v3-缩放到标记时出错

Javascript Google maps v3-缩放到标记时出错,javascript,json,google-maps,asp.net-mvc-4,google-maps-api-3,Javascript,Json,Google Maps,Asp.net Mvc 4,Google Maps Api 3,我正在尝试将GoogleMapsV3元素加载到我的网站中,用户可以在其中动态选择一些过滤器来显示某些标记。然后将结果序列化为JSON文件,供maps对象用于设置指定标记 我尝试制作一个测试页面,如下所示: @section headerScripts { <script src="~/Scripts/jquery-1.9.1.js"></script> <script type="text/javascript" src="https://maps.

我正在尝试将GoogleMapsV3元素加载到我的网站中,用户可以在其中动态选择一些过滤器来显示某些标记。然后将结果序列化为JSON文件,供maps对象用于设置指定标记

我尝试制作一个测试页面,如下所示:

@section headerScripts {
    <script src="~/Scripts/jquery-1.9.1.js"></script>
    <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>

    <script type="text/javascript">
        var map;
        var latlng = new google.maps.LatLng(56.29216, 10.34912);
        var markerList = [];

        function initialize() {
            var mapOptions = {
                zoom: 7,
                center: latlng,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            }
            map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
        }

        function addMarkers(stores) {
            for (var i = 0; i < stores.length; i++) {
                var marker = new google.maps.Marker({
                    position: new google.maps.LatLng(stores[i].Latitude, stores[i].Longitude),
                    map: map,
                    title: stores[i].Name
                });
                markerList.push(marker);
            }
            zoomToMarkers();
        }

        function zoomToMarkers() {
            var latlngbounds = new google.maps.LatLngBounds();
            markerList.forEach(function (n) {
                latlngbounds.extend(n);
            });
            map.setCenter(latlngbounds.getCenter());
            map.fitBounds(latlngbounds);
        }

        $(document).ready(function () {
            initialize();
            $.getJSON("/Product/GetStore/", addMarkers);
        });

    </script>
}

<div id="map-canvas" style="width: 500px; height: 500px;"></div>
@节头脚本{
var映射;
var latlng=新的google.maps.latlng(56.29216,10.34912);
var-markerList=[];
函数初始化(){
变量映射选项={
缩放:7,
中心:拉特林,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById(“地图画布”),mapOptions);
}
功能添加标记(存储){
对于(变量i=0;i
它设置的标记好,这是可行的,但我想一个功能缩放,所以只有地图上的标记显示在“缩放”。但是当我调用zoomToMarkers(基于我在网上找到的一个函数)时,我从google maps js文件中得到一个错误:

中第16行第353列未处理的异常 0x800a01b6-Microsoft JScript运行时错误:对象不支持属性或方法“lat”


我不知道为什么会发生这种情况,因为似乎很多其他人已经让它发挥了作用。你们能帮忙吗?

我自己发现了错误。问题是在这方面

latlngbounds.extend(n);
我将标记对象添加到latlngbounds而不是坐标。因此,我将其更正为:

function addMarkers(stores) {
    for (var i = 0; i < stores.length; i++) {
        var marker_latlng = new google.maps.LatLng(stores[i].Latitude, stores[i].Longitude);
        var marker = new google.maps.Marker({
            position: marker_latlng,
            map: map,
            title: stores[i].Name
        });
        latlngbounds.extend(marker_latlng);
    }
    zoomToMarkers();
}

function zoomToMarkers() {
    map.setCenter(latlngbounds.getCenter());
    map.fitBounds(latlngbounds);
}
函数添加标记(存储){
对于(变量i=0;i

这很好用

请看看我的类似问题-