无法使用谷歌地图 API JS 在英特尔 xdk 中看到谷歌地图

Posted

技术标签:

【中文标题】无法使用谷歌地图 API JS 在英特尔 xdk 中看到谷歌地图【英文标题】:Not able to see google map in intel xdk using Google Map API JS 【发布时间】:2016-04-12 04:40:48 【问题描述】:

这是我的第一个 Google Map API 项目,我正在创建一个交通应用程序,但不幸的是它不起作用,之前它可以工作,但现在它只能在浏览器中工作,而不是在移动设备和模拟器上工作。

在模拟器中只显示Google 标志和Terms 链接。

我正在使用这个参考谷歌链接

<script type="text/javascript" src="http://maps.google.com/maps/api/js?key=MYKEY&libraries=places"></script>

我的 JS 代码:(mapwork.js)

function currentpostionmap()

     if ( navigator.geolocation ) 


        function success(pos) 
         
             var latlng = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);
             var myOptions = 
            zoom: 15,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        ;
        map = new google.maps.Map(document.getElementById("map"), myOptions);
          var image123 = 'https:///developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png';
             var bounds = new google.maps.LatLngBounds();
        marker = new google.maps.Marker(
            position: latlng,
            map: map,
            icon: image123
        
        );
              bounds.extend(latlng);
                    map.fitBounds(bounds);
//            
                    multimarker(map);
//               

        
        function fail(error) 
           var latlng = new google.maps.LatLng(18.5204, 73.8567);
             var myOptions = 
            zoom: 10,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        ;
            map = new google.maps.Map(document.getElementById("map"), myOptions);
      
            marker = new google.maps.Marker(
            position: latlng,
            map: map
           
            );


        
        // Find the users current position.  Cache the location for 5 minutes, timeout after 6 seconds
        navigator.geolocation.getCurrentPosition(success, fail, maximumAge: 500000, enableHighAccuracy:true, timeout: 6000);
     

function multimarker(map)

          jQuery.ajax(                              
    url: baseurl +  "getdriverlocation.php",

    async: true,
    success: function(data)
       var myArray = jQuery.parseJSON(data);// instead of JSON.parse(data)

        jQuery(myArray).each(function( index, element )      
        driverlat = element.driver_lat;
        driverlng = element.driver_lng;
        locations.push([driverlat , driverlng])
);



 for (i  = 0; i < locations.length; i++)
                  
                var latlng1 = new google.maps.LatLng(locations[i][0], locations[i][1]);

            drivermarker=new google.maps.Marker(position:latlng1);
            drivermarker.setMap(map);

           google.maps.event.addListener(drivermarker, 'click', (function(marker, i) 
            return function() 

            //DRIVER CLICK EVENT
        
      )(drivermarker, i));



                 


 

);


 function watchDriverPosition(userid)

    function success(pos)
    
         window.setInterval(function()
          saveDriverLocation(pos.coords.latitude, pos.coords.longitude,userid);
        , 50000);
    
    function fail()
    
        alert ('Fail to watch drivers Position');
    
    watchId = navigator.geolocation.watchPosition(success, fail, maximumAge: 500000, enableHighAccuracy:true, timeout: 6000);


function saveDriverLocation(latc,lngc,userid)


     jQuery.ajax(
url: baseurl + "postdriverlocation.php",
data:'latitude='+latc +'&longitude='+lngc+'&login_id='+userid,
type: "POST",
success:function(response)
    response = $.trim(response);
    if (response == "false")
       console.log(response);


  else
      console.log(response);
  


,
error:function ()
);

在此处调用地图功能(main.js)

function showmap(usertype,userid)
    
        if (usertype==1)
            
                          changepage('#main');
                currentpostionmap();

            
        else if (usertype==0)
            

                watchDriverPosition(userid);

            
        else
            alert('You are not logged in.');
            changepage('#login');
        
    

它适用于所有浏览器,但不适用于 EMULATOR 或 MOBILE PHONE。

请告诉我为什么会这样并提供更好的解决方案

谢谢

【问题讨论】:

【参考方案1】:

将您的地图代码包装到

 $( document ).on( "pageshow", "#YOUR_MAP_PAGE", function() 

//your map code...

);

【讨论】:

以上是关于无法使用谷歌地图 API JS 在英特尔 xdk 中看到谷歌地图的主要内容,如果未能解决你的问题,请参考以下文章

英特尔 XDK:文件 I/O

英特尔 Xdk 使用 Crosswalk Cordova 混合平台构建,但本地小部件无法正常工作

AJAX,英特尔 XDK 不工作

英特尔 XDK 的不同性能

英特尔 XDK 的云构建如何工作?

如何在英特尔 xdk 的列表视图中显示 json 数据