Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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 贴图未第二次渲染,或第二次在其他页面上渲染_Javascript_Google Maps_Ionic Framework - Fatal编程技术网

Javascript 贴图未第二次渲染,或第二次在其他页面上渲染

Javascript 贴图未第二次渲染,或第二次在其他页面上渲染,javascript,google-maps,ionic-framework,Javascript,Google Maps,Ionic Framework,我想显示两种不同功能的地图。 当点击第一个地图页面时,它的工作正常,但之后导航到其他页面地图时,它的不工作显示空白页面。有人能帮忙吗 第一控制器代码 .controller('ShowMapCtrl', function($scope, Chats, global, $timeout,loader,geolocation,apiservice,local,$cordovaGeolocation,$stateParams) { $scope.init = function(){

我想显示两种不同功能的地图。 当点击第一个地图页面时,它的工作正常,但之后导航到其他页面地图时,它的不工作显示空白页面。有人能帮忙吗

第一控制器代码

.controller('ShowMapCtrl', function($scope, Chats, global, $timeout,loader,geolocation,apiservice,local,$cordovaGeolocation,$stateParams) {
        $scope.init = function(){
          var lat = $stateParams.lat;
          var long = $stateParams.long;
          var name = $stateParams.name;
          var time = $stateParams.time;
          var address = $stateParams.address;
           //alert(name+"Map Controller"+time);
           //var options = {timeout: 10000, enableHighAccuracy: true};
           //$cordovaGeolocation.getCurrentPosition(options).then(function(position){
            var latLng = new google.maps.LatLng(lat, long);
            var address = null;
            var map=null;
            var marker=null;
            var mapOptions = {
              center: latLng,
              zoom: 15,
              mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            if(address == 'Not Found Data' || address == null){
                var geocoder = new google.maps.Geocoder;

                var latlng = {lat: lat, lng: long};

             geocoder.geocode({'location': latlng}, function(results, status) {
                if (status === 'OK') {
                    if (results[1]) {
                        address=results[1].formatted_address;
                        //infowindow.setContent();
                    } else {
                        window.alert('No results found');
                    }
                } else {
                    window.alert('Geocoder failed due to: ' + status);
                }
                });
            }
                    if(map!=null){
                        //alert("Map not clear")
                        map.setOptions(mapOptions);
                    }

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



            //Wait until the map is loaded
            google.maps.event.addListenerOnce(map, 'idle', function(){

             if(marker){
              marker.setMap(null);
             }
              marker = new google.maps.Marker({
                  map: map,
                  animation: google.maps.Animation.DROP,
                  position: latLng
              });




                var contentstr="<div><strong>Name:</strong>"+name+"<br/><strong>Time:</strong>"+time+"<br/><strong>Location:</strong>"+address+"</div>";  
              var infoWindow = new google.maps.InfoWindow({
                    content: contentstr
                });

                google.maps.event.addListener(marker, 'click', function () {
                    infoWindow.open(map, marker);
               });

            });
        }



            $scope.$on('$ionicView.beforeEnter', function() {
                $scope.init();
            });

          /*}, function(error){
            console.log("Could not get location");
          });*/

           /*var map;
            document.addEventListener("deviceready", function() {
              var div = document.getElementById("map_canvas");

              // Initialize the map view
              map = plugin.google.maps.Map.getMap(div);

              // Wait until the map is ready status.
              map.addEventListener(plugin.google.maps.event.MAP_READY, onMapReady);
            }, false);

            function onMapReady() {
              var button = document.getElementById("button");
              button.addEventListener("click", onBtnClicked, false);
            }

            function onBtnClicked() {
              map.showDialog();
            }
            */


    })
.controller('ShowMapCtrl',函数($scope、Chats、global、$timeout、loader、geolocation、apiservice、local、$cordovaGeolocation、$stateparms){
$scope.init=函数(){
var lat=$stateParams.lat;
var long=$stateParams.long;
var name=$stateParams.name;
var time=$stateParams.time;
var address=$stateParams.address;
//警报(名称+地图控制器+时间);
//var options={timeout:10000,enableHighAccurance:true};
//$cordovaGeolocation.getCurrentPosition(选项)。然后(函数(位置){
var latLng=新的google.maps.latLng(lat,long);
var地址=null;
var-map=null;
var-marker=null;
变量映射选项={
中心:拉特林,
缩放:15,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
如果(地址=='未找到数据'| |地址==空){
var geocoder=new google.maps.geocoder;
var-latlng={lat:lat,lng:long};
geocoder.geocode({'location':latlng},函数(结果,状态){
如果(状态=='OK'){
如果(结果[1]){
地址=结果[1]。格式化的\u地址;
//setContent();
}否则{
window.alert(“未找到结果”);
}
}否则{
window.alert('地理编码器由于:'+状态而失败);
}
});
}
if(map!=null){
//警报(“地图不清晰”)
设置选项(mapOptions);
}
map=new google.maps.map(document.getElementById(“map”)、mapOptions);
//等待地图加载
google.maps.event.addListenerOnce(map'idle',function(){
如果(标记){
marker.setMap(空);
}
marker=新的google.maps.marker({
地图:地图,
动画:google.maps.animation.DROP,
职位:latLng
});
var contentstr=“名称:”+Name+”
时间:“+Time+”
位置:“+address+”; var infoWindow=new google.maps.infoWindow({ 内容:contentstr }); google.maps.event.addListener(标记,'click',函数(){ 信息窗口。打开(地图、标记); }); }); } $scope.$on(“$ionicView.beforeEnter”函数(){ $scope.init(); }); /*},函数(错误){ log(“无法获取位置”); });*/ /*var映射; document.addEventListener(“deviceready”,函数(){ var div=document.getElementById(“映射画布”); //初始化地图视图 map=plugin.google.maps.map.getMap(div); //等待地图处于就绪状态。 addEventListener(plugin.google.maps.event.map_READY,onMapReady); },假); 函数onMapReady(){ var button=document.getElementById(“按钮”); 按钮。addEventListener(“单击”,点击,错误); } 函数onBtnClicked(){ showDialog(); } */ })
第一个控制器的页面

<ion-view view-title="Map Loaction">
   <ion-content class="has-header">
     <div id="map" data-tap-disabled="true"></div>
    </ion-content>

</ion-view>
.controller('AllEmpLoc', function($scope, Chats, global, $timeout,loader,geolocation,apiservice,local,$cordovaGeolocation,$stateParams) {
            //alert("All Location Emp");

            $scope.init = function(){
                loader.show();
                var url = global.API_URL + "getAlluserlocation/" + local.getData('uid');
                apiservice.callJson(url).then(function(response) {

                    //alert(JSON.stringify(response));
                    console.log("CurrentLocation" + JSON.stringify(response.data));
                    console.log("Name"+response.data[0].name);
                    $scope.userlist = response.data;
                    //alert("length"+response.data.length);
                    //alert("scope length"+$scope.userlist.length);
                    var lat = response.data[0].latitude;
                    var lon = response.data[0].longitude;
                    var address = null;
                    var locations = [];
                    var map=null;
                    var marker=null;
                    var cnt=0;
                    for(var i=0;i<response.data.length;i++){
                            locations[i]=[response.data[i].name,response.data[i].latitude,response.data[i].longitude,response.data[i].address,response.data[i].time];
                    }

                    console.log("Locations->"+JSON.stringify(locations));
                    var mapOptions = {
                                zoom: 8,
                                center: new google.maps.LatLng(lat, lon),
                                mapTypeId: google.maps.MapTypeId.ROADMAP
                            }
                    if(map!=null){
                        //map.clear();
                        map.setOptions(mapOptions);
                    }

                    map = new google.maps.Map(document.getElementById('map'),mapOptions );



                        var infowindow = new google.maps.InfoWindow();  
                        for(var i=0;i<locations.length;i++){
                        //alert(locations[i][0]);

                        marker = new google.maps.Marker({
                                position: new google.maps.LatLng(locations[i][1], locations[i][2]),
                                map: map
                            });


                            google.maps.event.addListener(marker, 'click', (function(marker, i) {
                                return function() {
                                    var contentStr = "<div> <strong>Name:</strong>"+locations[i][0]+"<br/>"+"<strong>Time:</strong>"+locations[i][4]+"<br/><strong>Location:</strong>"+locations[i][3]+"</div>";    
                                    infowindow.setContent(contentStr);
                                    infowindow.open(map, marker);

                                }
                                })(marker, i));
                    }       

                    //console.log(JSON.stringify(locations));
                    loader.hide();

                }, function(err) {
                    console.error("eroor " + JSON.stringify(err));
                    //alert("error occur->" + err.data);
                });

            }
            $scope.$on('$ionicView.beforeEnter', function() {
                $scope.init();
            });




    }) 
<ion-view view-title="User Location">
   <ion-content class="has-header">
     <div id="map" data-tap-disabled="true"></div>
    </ion-content>
</ion-view>

辅助控制器

<ion-view view-title="Map Loaction">
   <ion-content class="has-header">
     <div id="map" data-tap-disabled="true"></div>
    </ion-content>

</ion-view>
.controller('AllEmpLoc', function($scope, Chats, global, $timeout,loader,geolocation,apiservice,local,$cordovaGeolocation,$stateParams) {
            //alert("All Location Emp");

            $scope.init = function(){
                loader.show();
                var url = global.API_URL + "getAlluserlocation/" + local.getData('uid');
                apiservice.callJson(url).then(function(response) {

                    //alert(JSON.stringify(response));
                    console.log("CurrentLocation" + JSON.stringify(response.data));
                    console.log("Name"+response.data[0].name);
                    $scope.userlist = response.data;
                    //alert("length"+response.data.length);
                    //alert("scope length"+$scope.userlist.length);
                    var lat = response.data[0].latitude;
                    var lon = response.data[0].longitude;
                    var address = null;
                    var locations = [];
                    var map=null;
                    var marker=null;
                    var cnt=0;
                    for(var i=0;i<response.data.length;i++){
                            locations[i]=[response.data[i].name,response.data[i].latitude,response.data[i].longitude,response.data[i].address,response.data[i].time];
                    }

                    console.log("Locations->"+JSON.stringify(locations));
                    var mapOptions = {
                                zoom: 8,
                                center: new google.maps.LatLng(lat, lon),
                                mapTypeId: google.maps.MapTypeId.ROADMAP
                            }
                    if(map!=null){
                        //map.clear();
                        map.setOptions(mapOptions);
                    }

                    map = new google.maps.Map(document.getElementById('map'),mapOptions );



                        var infowindow = new google.maps.InfoWindow();  
                        for(var i=0;i<locations.length;i++){
                        //alert(locations[i][0]);

                        marker = new google.maps.Marker({
                                position: new google.maps.LatLng(locations[i][1], locations[i][2]),
                                map: map
                            });


                            google.maps.event.addListener(marker, 'click', (function(marker, i) {
                                return function() {
                                    var contentStr = "<div> <strong>Name:</strong>"+locations[i][0]+"<br/>"+"<strong>Time:</strong>"+locations[i][4]+"<br/><strong>Location:</strong>"+locations[i][3]+"</div>";    
                                    infowindow.setContent(contentStr);
                                    infowindow.open(map, marker);

                                }
                                })(marker, i));
                    }       

                    //console.log(JSON.stringify(locations));
                    loader.hide();

                }, function(err) {
                    console.error("eroor " + JSON.stringify(err));
                    //alert("error occur->" + err.data);
                });

            }
            $scope.$on('$ionicView.beforeEnter', function() {
                $scope.init();
            });




    }) 
<ion-view view-title="User Location">
   <ion-content class="has-header">
     <div id="map" data-tap-disabled="true"></div>
    </ion-content>
</ion-view>
.controller('AllEmpLoc',函数($scope、Chats、global、$timeout、loader、geolocation、apiservice、local、$cordovaGeolocation、$stateparms){
//警报(“所有位置Emp”);
$scope.init=函数(){
loader.show();
var url=global.API_url+“getAlluserlocation/”+local.getData('uid');
callJson(url).then(函数(响应){
//警报(JSON.stringify(响应));
log(“CurrentLocation”+JSON.stringify(response.data));
console.log(“Name”+response.data[0].Name);
$scope.userlist=response.data;
//警报(“长度”+响应.数据.长度);
//警报(“范围长度”+$scope.userlist.length);
var lat=响应。数据[0]。纬度;
var lon=response.data[0]。经度;
var地址=null;
var位置=[];
var-map=null;
var-marker=null;
var-cnt=0;

对于(var i=0;i大多数情况下是由于离子缓存,请添加下面的函数以触发贴图再次渲染

$scope.$on( "$ionicView.enter", function( scopes, states ) {
               // This view runs every time you move between tabs
               google.maps.event.trigger( map, 'resize' );
          });

大多数情况下是由于离子缓存,请添加下面的函数以触发贴图再次渲染

$scope.$on( "$ionicView.enter", function( scopes, states ) {
               // This view runs every time you move between tabs
               google.maps.event.trigger( map, 'resize' );
          });