Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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 Map API未绘制标记数组_Javascript_Jquery_Arrays_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript Google Map API未绘制标记数组

Javascript Google Map API未绘制标记数组,javascript,jquery,arrays,google-maps,google-maps-api-3,Javascript,Jquery,Arrays,Google Maps,Google Maps Api 3,我需要一些建议或责备,因为我的代码错了。我不熟悉JQuery和谷歌地图api。我有一个JSON get来检索我的数据。我已经声明了一个数组并进行了存储(希望这是正确的方法) 更新**-由于@geocodezip,我已经更新了我的代码,以允许正确填充数组 当我运行应用程序时,地图加载良好,但没有标记。 我已将Google maps initializeMap()更改为异步版本 function initializeMap() { var map = new google.map

我需要一些建议或责备,因为我的代码错了。我不熟悉JQuery和谷歌地图api。我有一个JSON get来检索我的数据。我已经声明了一个数组并进行了存储(希望这是正确的方法)

更新**-由于@geocodezip,我已经更新了我的代码,以允许正确填充数组

当我运行应用程序时,地图加载良好,但没有标记。 我已将Google maps initializeMap()更改为异步版本

function initializeMap() {


        var map = new google.maps.Map(document.getElementById("googleMap"), {
            zoom: 12,
            center: new google.maps.LatLng(citylat, citylng),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        });


        var infowindow = new google.maps.InfoWindow();

        var marker, i;

        for (i = 0; i < carparksArray.length; i++) {
            marker = new google.maps.Marker({
                position: new google.maps.LatLng(carparksArray[i][1], carparksArray[i][2]),
                map: map
            });

            google.maps.event.addListener(marker, 'click', (function (marker, i) {
                return function () {
                    infowindow.setContent(carparksArray[i][0]);
                    infowindow.open(map, marker);
                }
            })(marker, i));
        }

    }
函数初始化映射(){
var map=new google.maps.map(document.getElementById(“googleMap”){
缩放:12,
中心:新google.maps.LatLng(Cityla,citylng),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infowindow=new google.maps.infowindow();
var标记,i;
对于(i=0;i

我现在填充了一个数组,但地图上仍然没有标记

这是我的全部剧本。也许有一些主要的缺陷

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 



<script type="text/javascript">
    //define variables
    var geocoder;
    var citylat = 0;
    var citylng = 0;
    var carparksArray = [];

    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
    }
    //Get the latitude and the longitude;
    function successFunction(position)
    {
        var lat = position.coords.latitude;
        var lng = position.coords.longitude;
        codeLatLng(lat, lng)
    }

    function errorFunction()
    {
        alert("Geocoder failed");
    }


    function initialize()
    {
        geocoder = new google.maps.Geocoder();
    }
    //get city of current location and runs codeAddress()
    function codeLatLng(lat, lng) {
        var latlng = new google.maps.LatLng(lat, lng);
        geocoder.geocode({ latLng: latlng }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                if (results[1]) {
                    var arrAddress = results;
                    console.log(results);
                    $.each(arrAddress, function (i, address_component) {
                        if (address_component.types[0] == "postal_town") {
                            itemPostalTown = address_component.address_components[0].long_name;
                            document.getElementById("town").value = itemPostalTown;
                            codeAddress();



                        }
                    });
                } else {
                    alert("No results found");
                }
            } else {
                alert("Geocoder failed due to: " + status);
            }
        });
    }



    //get latlong of city and runs getCarParks()
    function codeAddress() {
        geocoder = new google.maps.Geocoder();
        var address = document.getElementById("town").value;
        geocoder.geocode({ 'address': address }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {

                citylat = results[0].geometry.location.lat();
                citylng = results[0].geometry.location.lng();
                getCarParksLatLng();   

            }

            else {
                alert("Geocode was not successful for the following reason: " + status);
            }
        });
    }
    //sets map up
    function initializeMap() {


        var map = new google.maps.Map(document.getElementById("googleMap"), {
            zoom: 12,
            center: new google.maps.LatLng(citylat, citylng),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        });


        var infowindow = new google.maps.InfoWindow();

        var marker, i;

        for (i = 0; i < carparksArray.length; i++) {
            marker = new google.maps.Marker({
                position: new google.maps.LatLng(carparksArray[i][1], carparksArray[i][2]),
                map: map
            });

            google.maps.event.addListener(marker, 'click', (function (marker, i) {
                return function () {
                    infowindow.setContent(carparksArray[i][0]);
                    infowindow.open(map, marker);
                }
            })(marker, i));
        }

    }
    //loads map
    function loadScript() {
        var script = document.createElement("script");
        script.src = "http://maps.googleapis.com/maps/api/js?callback=initializeMap";
        document.body.appendChild(script);
    }

    //get carparks names 
    function getCarParksLatLng() {

        var town = document.getElementById("town").value;
        var carparkList = "<p>";

        var uri = "http://localhost/api/carparks?$filter=Town%20eq%20%27" + town + "%27";
        $.getJSON(uri,
             function (data) {
                 carparksArray = [];
                 $('#here_data').empty(); // Clear existing text.
                 // Loop through the list of carparks.
                 $.each(data, function (key, val) {

                     carparksArray.push([val.Name, val.Latitude, val.Longitude]);

                 });
                 console.log(carparksArray);
             });

        loadScript();
    }
    $(document).ready(initialize)

</script>

//定义变量
var地理编码器;
黄连酸变异系数=0;
var citylng=0;
var carparksArray=[];
if(导航器.地理位置)
{
navigator.geolocation.getCurrentPosition(successFunction,errorFunction);
}
//得到纬度和经度;
功能成功功能(位置)
{
var lat=位置坐标纬度;
var lng=位置坐标经度;
codeLatLng(lat,lng)
}
函数errorFunction()
{
警报(“地理编码器失败”);
}
函数初始化()
{
geocoder=新的google.maps.geocoder();
}
//获取当前位置的城市并运行codeAddress()
功能代码LATLNG(lat,lng){
var latlng=新的google.maps.latlng(lat,lng);
geocoder.geocode({latLng:latLng},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
如果(结果[1]){
var arrAddress=结果;
控制台日志(结果);
$.each(数组地址、函数(i、地址\组件){
if(地址组件类型[0]=“邮政镇”){
itemPostalTown=地址\u组件。地址\u组件[0]。长\u名称;
document.getElementById(“town”).value=itemPostalTown;
代码地址();
}
});
}否则{
警报(“未发现结果”);
}
}否则{
警报(“地理编码器因“+状态”而失败);
}
});
}
//获得城市的拉特朗并经营getCarParks()
函数代码地址(){
geocoder=新的google.maps.geocoder();
var address=document.getElementById(“town”).value;
geocoder.geocode({'address':address},函数(结果,状态){
if(status==google.maps.GeocoderStatus.OK){
cityla=results[0]。geometry.location.lat();
citylng=results[0]。geometry.location.lng();
getCarParksLatLng();
}
否则{
警报(“地理编码因以下原因未成功:“+状态”);
}
});
}
//设置地图
函数初始化映射(){
var map=new google.maps.map(document.getElementById(“googleMap”){
缩放:12,
中心:新google.maps.LatLng(Cityla,citylng),
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var infowindow=new google.maps.infowindow();
var标记,i;
对于(i=0;i
您没有正确地将条目添加到
停车场阵列中。每个数组元素都需要是一个数组,因此数组如下所示:

var carparksArray = [
  ['Bondi Beach', -33.890542, 151.274856, 4],
  // ...
  ];
更新代码:

var carparks = [];
$.getJSON(uri,
   function (data) {
     $('#here_data').empty(); // Clear existing text.
     // Loop through the list of carparks.
     $.each(data, function (key, val) {
        carparks.push([val.Name, val.Latitude, val.Longitude]);
     });
   });
  loadScript();
}

谢谢大家在这方面的帮助。因为@geocodezip声明
$.getJSON是异步的,我将loadscript()函数移动到了ca
$.getJSON(uri,
             function (data) {
                 carparksArray = [];
                 $('#here_data').empty(); // Clear existing text.
                 // Loop through the list of carparks.
                 $.each(data, function (key, val) {

                     carparksArray.push([val.Name, val.Latitude, val.Longitude]);

                 });
                 console.log(carparksArray);
                 loadScript();
             });