Ionic Framework/Cordova 上的 Google 地图不适用于 Android 构建

2023-12-02

我一直在为一个应用程序编写代码来跟踪用户位置并使用谷歌地图显示它。

我的代码在浏览器(Safari、Firefox、Chrome)中完美运行,但在移动设备(android)上根本不起作用。

谷歌地图 API 不起作用,导航也不可靠。我是一个离子新手,编写了一个相当简单的应用程序来测试它。它有离子侧菜单模板和一些简单的 AngularJS 控制器。

angular.module('starter.controllers', [])

    .controller('AppCtrl', function($scope, $ionicModal, $timeout) {

        // With the new view caching in Ionic, Controllers are only called
        // when they are recreated or on app start, instead of every page change.
        // To listen for when this page is active (for example, to refresh data),
        // listen for the $ionicView.enter event:
        //$scope.$on('$ionicView.enter', function(e) {
        //});

        // Form data for the login modal
        $scope.loginData = {};

        // Create the login modal that we will use later
        $ionicModal.fromTemplateUrl('templates/login.html', {
            scope: $scope
        }).then(function(modal) {
            $scope.modal = modal;
        });

        // Triggered in the login modal to close it
        $scope.closeLogin = function() {
            $scope.modal.hide();
        };

        // Open the login modal
        $scope.login = function() {
            $scope.modal.show();
        };

        // Perform the login action when the user submits the login form
        $scope.doLogin = function() {
            console.log('Doing login', $scope.loginData);

            // Simulate a login delay. Remove this and replace with your login
            // code if using a login system
            $timeout(function() {
                $scope.closeLogin();
            }, 1000);
        };
    })

    .controller('PlaylistsCtrl', function($scope) {
        $scope.playlists = [
            { title: 'Reggae', id: 1 },
            { title: 'Chill', id: 2 },
            { title: 'Dubstep', id: 3 },
            { title: 'Indie', id: 4 },
            { title: 'Rap', id: 5 },
            { title: 'Cowbell', id: 6 }
        ];
    })

    .controller('PlaylistCtrl', function($scope, $stateParams) {
    })

    .controller('MapController', function($scope, $ionicLoading) {
        console.log("MapController");
        $scope.initialise = function() {
            console.log("In Google.maps.event.addDomListener");
            var myLatlng = new google.maps.LatLng(37.3000, -120.4833);
            var mapOptions = {
                center: myLatlng,
                zoom: 19,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            console.log(mapOptions);
            var map = new google.maps.Map(document.getElementById("map"), mapOptions);

            navigator.geolocation.getCurrentPosition(function(pos) {
                console.log(pos);
                map.setCenter(new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude));
                var myLocation = new google.maps.Marker({
                    position: new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude),
                    map: map,
                    title: "My Location"
                });
            });

            $scope.map = map;
        };
        google.maps.event.addDomListener(document.getElementById("map"), 'load', $scope.initialise());


    });

检查所有代码GitHub。对此的任何帮助将不胜感激。

我的开发者控制台上显示的错误:

ReferenceError: google is not defined

错误指出google未定义。我最有根据的猜测是来自index.html未正确加载:

<script src="http://maps.googleapis.com/maps/api/js?key=AIzaSyD4bzp0Ck8nTXgfs9ZYo8vXZ2tgWhqzWmY&sensor=true">

我认为这是因为使用了新的 Cordova 5.0 版本。您需要安装cordova-plugin-whitelist如下:

cordova plugin add cordova-plugin-whitelist

还将以下内容添加到config.xml:

<access origin="*" />
<allow-navigation href="*" />
<allow-intent href="*" />

最后将以下内容添加到您的index.html:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' *; style-src 'self' 'unsafe-inline' *; script-src 'self' 'unsafe-inline' 'unsafe-eval' *">

请注意,上述设置不是您希望在生产环境中使用的设置。请看一下README of the cordova-plugin-whitelist了解更多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ionic Framework/Cordova 上的 Google 地图不适用于 Android 构建 的相关文章

随机推荐

  • 我的用于解决 3 壶水难题的序言程序有什么问题?

    任何人都可以找到为什么我在这段代码中无法通过 go 得到任何真正的答案吗 例如 我写go 7 3 l 我认为它应该将 3 升水转移到第二个水罐中 但根据序言 这是错误的 怎么了 dynamic go 3 dynamic cur state
  • 为什么在 C++ 中字符串文字中的反斜杠必须转义?

    我想为两种语言声明相同的正则表达式模式 对于TCL我这样做 set pattern d s S 但对于 C 我必须对相同的模式执行此操作 boost regex pattern d s S 否则 C 编译器会告诉我们以下信息 warning
  • 如何加载 JAR 外部但相对于 JAR 的文件?

    我需要加载 JAR 之外的文件 但相对于它 lib config config ini准确地说 我使用了那个确切的路径 只要工作目录是 JAR 所在的位置 它就可以正常工作 即 path to jar java jar JAR jar 如果
  • Pandas - 根据多列进行分组并在组内排名

    我有一个像这样的数据框 df pd DataFrame asset id 10 10 10 20 20 20 method id p2 p3 p4 p3 p1 p2 method rank 5 2 2 2 5 1 conf score 0
  • zbar sdk 无法通过使用相机模拟器在 iPhone 模拟器上工作

    我的项目必须支持条形码扫描 我正在使用 zbar sdk 我已经集成了代码并使用 iphone 模拟器运行 我正在使用相机模拟器扫描条形码 它正确打开条形码图像 但条形码扫描不起作用 有人用过这个吗 您可以在iPhone模拟器上测试条形码
  • 如何在Java Restlet中访问请求的标头值?

    我正在使用开发网络服务Restlet Java 为此 我想保护一些网络服务免受未经授权的客户端的侵害 所以我写了Filter类 在那个 Filter 类中我想得到headers请求的 但我收到以下错误 java lang ClassCast
  • 为什么我无法使用单个点访问整数的属性?

    如果我尝试写 3 toFixed 5 存在语法错误 使用双点 插入空格 将三个点放在括号中或使用方括号表示法可以使其正常工作 3 toFixed 5 3 toFixed 5 3 toFixed 5 3 toFixed 5 为什么单点表示法不
  • 如何在 SQL 中抑制或隐藏重复值?

    我已经四处寻找了一下 但还没有找到如何做到这一点 尽管已经找到了很多关于分析其性能的信息 我想执行一个选择 它返回几列数据 然后还返回另一个表中相关行的嵌套表 实际上是同一个表本身连接 但我 认为 这是不相关的 所以数据是这样的 id na
  • WPF 和初始焦点

    似乎当 WPF 应用程序启动时 没有任何东西具有焦点 这实在是太奇怪了 我使用过的所有其他框架都符合您的预期 将初始焦点放在 Tab 键顺序中的第一个控件上 但我已经确认它是 WPF 而不仅仅是我的应用程序 如果我创建一个新窗口 然后在其中
  • 在 Python 中对正则表达式执行 WebDriverWait() 或类似检查

    我希望能够执行类似于WebDriverWait i e WebDriverWait driver 60 until expected conditions text to be present in element By XPATH tr
  • Android Studio 和 AdMob -- 无法实例化以下类

    我一直在尝试在我的应用程序中使用 AdMob 横幅广告 但不断收到错误消息 无法实例化以下类 com google android gms ads AdView java lang VerifyError Expecting a stack
  • 如何摆脱android全屏模式下的顶部褪色边缘?

    通过将以下两行代码放入activity OnCreate中 我可以获得全屏视图 requestWindowFeature Window FEATURE NO TITLE getWindow setFlags WindowManager La
  • 字符串资源文件中的格式语句

    我在通常的 strings xml 资源文件中定义了字符串 如下所示
  • 将 Excel 工作表添加到工作簿末尾

    我正在尝试将 Excel 工作表添加到工作簿的末尾 保留第一个工作表作为摘要 import win32com client Excel win32com client DispatchEx Excel Application Book Ex
  • Java 到 JSP - 如何将 Java 应用程序集成到 JSP 网页中?

    好吧 这肯定是今天最简单的问题了 这是我第一次尝试 Java 和 JSP 我刚刚使用 Eclipse 编写了一个小型 Java 应用程序 现在我想将这个小应用程序提供到网页中 我需要弄清楚Java应用程序和网页之间的联系 这是我的申请 pu
  • Putty - 使用 C# 动态删除文件

    我正在开发一个使用 C 作为编程语言的 Windows 应用程序 要求是 动态登录putty 从特定位置删除旧文件 我目前正在使用下面的代码登录 Putty 但如何运行删除命令 string hostname hostname string
  • Plotly:更新菜单的按钮实际上是如何工作的?

    我为什么想知道 这似乎是一个非常简单的问题 但我在使用下拉菜单编辑具有多个轨迹的图形时遇到了一些困难 所以我真的很渴望确保我理解plotlys下拉菜单 更新菜单和按钮的内部工作原理100 正确 因此 如果有人能抽出时间来看看下面的示例 那就
  • 使用 sscanf 读取带空格的字符串

    对于一个项目 我试图从字符串中读取一个 int 和一个字符串 唯一的问题是sscanf 似乎打破了阅读 s当它看到一个空格时 有什么办法可以绕过这个限制吗 这是我正在尝试做的一个例子 include
  • 反序列化不一致的 JSON 属性

    希望有人可以帮助我解决我尝试使用 Newtonsoft Json 反序列化的大型 JSON 文件中出现的以下不一致问题 对象的属性之一有时会显示为 roles field1 value field2 value 而其他时候 相同的属性显示为
  • Ionic Framework/Cordova 上的 Google 地图不适用于 Android 构建

    我一直在为一个应用程序编写代码来跟踪用户位置并使用谷歌地图显示它 我的代码在浏览器 Safari Firefox Chrome 中完美运行 但在移动设备 android 上根本不起作用 谷歌地图 API 不起作用 导航也不可靠 我是一个离子