如何从JSON数据合并两个不同的对象

用户名

嗨,我需要一些有关此代码段的帮助。我得到的输出是JSON数据的多个不同对象。但是我想提取目标数据,然后将它们合并为一个数组。但是我得到的所有数据仅仅是一个数据被一个数组一个接一个地合并。这是输出:在此处输入图片说明

$scope.findHospital = function(){

    $ionicLoading.show({
        template: '<ion-spinner icon="bubbles"></ion-spinner><br/>Acquiring location!'
    });

    var posOptions = {
        enableHighAccuracy: true,
        timeout: 20000,
        maximumAge: 0
    };

    $cordovaGeolocation.getCurrentPosition(posOptions).then(function (position) {
        var lat  = position.coords.latitude;
        var long = position.coords.longitude;
        var infowindow;

        var myLatlng = new google.maps.LatLng(lat, long);

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

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

        var service = new google.maps.places.PlacesService(map);
        service.nearbySearch({
            location: myLatlng,
            radius: 5000,
            type: ['police']
        }, callback);

        function callback(results, status) {
            if (status === google.maps.places.PlacesServiceStatus.OK) {
                for (var i = 0; i < results.length; i++) {
                    createMarker(results[i]);
                }
            }
        }

        function createMarker(place) {
            geocoder = new google.maps.Geocoder();

            var latlng = new google.maps.LatLng(lat, long);
            geocoder.geocode({'latLng': latlng}, function(results, status) {
                var placeLoc = place.geometry.location;
                var marker = new google.maps.Marker({
                  map: map,
                  position: place.geometry.location
                });
                var request = { reference: place.reference };

                service.getDetails(request, function(details, status) {
                    console.log(details);

                    var url = "https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins="+results[0].formatted_address+"&destinations="+details.formatted_address+"&key=AIzaSyDDxMGpu5SP5XwZGrKw5BQWl_r2dgLgpPY";
                    var distances = [];

                    $http.get(url).then(function(response){
                        var str = response.data.rows[0].elements[0].distance.text;

                        distances = distances.concat(str);

                        console.log(distances);
                    });
                }
            });
        }
    }
}

代码已更新!

阿卡什(Akash KC)

我强烈怀疑,distances每次createMarker调用方法数组都会初始化因此,将您distances置于全球范围内。即刚好超过您的解决getCurrentPosition承诺。

var distances = [];
$cordovaGeolocation.getCurrentPosition(posOptions).then(function (position) {
// your code

并从内部代码中删除距离初始化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章