使用 GOOGLE MAP API 的简单 Android 程序

2024-04-17

尝试使用 Google 地图

  • 这是我使用 google Map API 的第一个程序
  • 由于日志错误,我无法执行
  • 我需要纠正自己的地方

MainActivity.java

public class MainActivity extends Activity {

    // Google Map
    private GoogleMap googleMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        try {
            // Loading map
            initilizeMap();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /**
     * function to load map. If map is not created it will create it for you
     * */
    private void initilizeMap() {
        if (googleMap == null) {
            googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

            // check if map is created successfully or not
            if (googleMap == null) {
                Toast.makeText(getApplicationContext(),
                        "Sorry! unable to create maps", Toast.LENGTH_SHORT)
                        .show();
            }
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        initilizeMap();
    }

}

活动_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <fragment
        android:id="@+id/map"
        android:name="android.app.DialogFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.googlemaps"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- Required to show current location -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.googlemaps.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- Goolge Maps API Key -->
        <meta-data
            android:name="com.example.googlemaps.API_KEY"
            android:value="------------My-Key----------------" />
    </application>

</manifest>

更新_XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

更新日志

10-17 10:57:50.547: I/dalvikvm(458): Could not find method com.example.googlemaps.MainActivity.getFragmentManager, referenced from method com.example.googlemaps.MainActivity.initilizeMap
10-17 10:57:50.547: W/dalvikvm(458): VFY: unable to resolve virtual method 4829: Lcom/example/googlemaps/MainActivity;.getFragmentManager ()Landroid/app/FragmentManager;
10-17 10:57:50.547: D/dalvikvm(458): VFY: replacing opcode 0x6e at 0x0004
10-17 10:57:50.547: D/dalvikvm(458): VFY: dead code 0x0007-0028 in Lcom/example/googlemaps/MainActivity;.initilizeMap ()V
10-17 10:57:50.627: D/AndroidRuntime(458): Shutting down VM
10-17 10:57:50.627: W/dalvikvm(458): threadid=1: thread exiting with uncaught exception (group=0x40015560)
10-17 10:57:50.657: E/AndroidRuntime(458): FATAL EXCEPTION: main
10-17 10:57:50.657: E/AndroidRuntime(458): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.googlemaps/com.example.googlemaps.MainActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.os.Looper.loop(Looper.java:123)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.app.ActivityThread.main(ActivityThread.java:3683)
10-17 10:57:50.657: E/AndroidRuntime(458):  at java.lang.reflect.Method.invokeNative(Native Method)
10-17 10:57:50.657: E/AndroidRuntime(458):  at java.lang.reflect.Method.invoke(Method.java:507)
10-17 10:57:50.657: E/AndroidRuntime(458):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-17 10:57:50.657: E/AndroidRuntime(458):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-17 10:57:50.657: E/AndroidRuntime(458):  at dalvik.system.NativeStart.main(Native Method)
10-17 10:57:50.657: E/AndroidRuntime(458): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
10-17 10:57:50.657: E/AndroidRuntime(458):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.app.Activity.setContentView(Activity.java:1657)
10-17 10:57:50.657: E/AndroidRuntime(458):  at com.example.googlemaps.MainActivity.onCreate(MainActivity.java:19)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
10-17 10:57:50.657: E/AndroidRuntime(458):  ... 11 more
10-17 10:57:50.657: E/AndroidRuntime(458): Caused by: java.lang.ClassNotFoundException: android.view.fragment in loader dalvik.system.PathClassLoader[/data/app/com.example.googlemaps-2.apk]
10-17 10:57:50.657: E/AndroidRuntime(458):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
10-17 10:57:50.657: E/AndroidRuntime(458):  at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
10-17 10:57:50.657: E/AndroidRuntime(458):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.view.LayoutInflater.createView(LayoutInflater.java:471)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.view.LayoutInflater.onCreateView(LayoutInflater.java:549)
10-17 10:57:50.657: E/AndroidRuntime(458):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
10-17 10:57:50.657: E/AndroidRuntime(458):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:568)
10-17 10:57:50.657: E/AndroidRuntime(458):  ... 20 more

有任何想法吗

Thanks


您必须在 xml 布局中声明地图的片段类,如下所示: 用于加载GoogleMap在你的片段中。

有您推荐的吗在您的应用程序中添加地图 https://developers.google.com/maps/documentation/android/start#add_a_map ?

<fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

EDITED:

该错误是因为您的应用程序包含低于 12 的 API 级别。请注意,下面的代码仅适用于在面向 Android API 12 或更高版本的应用程序中测试您的设置,下面的代码不应在生产应用程序中使用。

      googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

因此,请尝试如下所示:

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

使用 GOOGLE MAP API 的简单 Android 程序 的相关文章

随机推荐

  • JMS 会话寿命长。保持 JMS 连接/JMS 会话总是打开是一种不好的做法吗?

    保持 JMS 连接 会话 消费者始终打开是一种不好的做法吗 代码草案示例 app startup code ConnectionFactory cf ConnectionFactory jndiContext lookup CF JNDI
  • 将 GCC 内联汇编与采用立即值的指令结合使用

    问题 我正在为 ARM Cortex M3 处理器开发定制操作系统 为了与我的内核交互 用户线程必须生成 SuperVisor Call SVC 指令 以前称为 SWI 用于软件中断 该指令在ARM ARM中的定义是 这意味着该指令需要即时
  • itextsharp 不关闭文件

    我有一些用于 itextsharp 合并 2 个 pdf 文件的代码 在网上某处找到的 合并工作正常 但似乎源文件在全部完成后仍在使用 我想做的是删除我已经合并的第一个文件 通过文件上传上传 并仅保留合并的文件 肯定是执行合并的代码导致文件
  • AWS 上的 Laravel 调度任务无法正常工作

    我正在将 Laravel 应用程序部署到 ElasticBeanstalk 环境 我正在尝试在服务器上的计划任务中运行命令 但它不起作用 这就是我所做的 我在 Kernel php 文件中安排命令如下 schedule gt command
  • Solaris C++ 流输入 >> 运算符和模板的模板

    我有一个编译器选项 我可以在 CC 编译器中使用它来获取以下代码 在 Visual C 中编译良好 std vector
  • Android 和 Java 中的 RSA 加密

    我想用 RSA 加密来加密字符串 我的公钥 私钥已生成并存储在数据库中 在android中 我使用这段代码 public static String encryptRSAToString String text String strPubl
  • 如何在R中识别坐标

    我想确定向量的哪个坐标给我带来最大的价值 举一个简单的例子 假设 x lt c 10 22 20 18 5 最大值是22 但是如何自动识别坐标2具有最大值呢 Thanks which max正如 Hong Ooi 指出的那样 是你的朋友 g
  • 如何通过嵌套正确链接 Promise

    我的节点项目当前包含嵌套回调的侧向圣诞树 以便获取数据并按正确的顺序处理它们 现在我正在尝试使用 Promises 重构它 但我不确定如何正确执行 假设我要获取办公室列表 然后获取每个办公室的所有员工 然后获取每个员工的工资 最后 所有实体
  • 在共享内存进程中分配字符串

    我有一个程序需要在两个进程之间共享字符串 我已经声明了一个包含数组的结构 char 该结构体分配有shmget and shmat在主进程被分叉之前 typedef struct Queue int index char directory
  • 如何将 :first-child 选择器与 Shadow DOM 的 元素一起使用?

    我想从自定义元素的内容中提取第一段 作为摘要 我希望以下内容能够发挥作用
  • ObjectDatasource的Select方法抛出异常如何处理?

    我有一个连接到 ObjectDatasource 的 Select 方法 该方法可能会引发异常 但我不知道如何处理它 问题是我无法控制它 当页面呈现时 ObjectDatasource 直接调用 select 方法 并直接抛出未处理的异常
  • 基础目标、活动目标、部署目标

    我知道这个问题的部分内容有多种不同的形式 但我想确保我的答案是正确的 以下是我的假设和理解 我想在提交之前知道它们是否正确 我的应用程序假定所有操作系统都支持功能 因此我应该 将Active SDK设置为最新 当前为SDK 3 0 将部署目
  • Shapeless 中具有常量返回类型的多态函数

    长话短说 我试图弄清楚如何定义从通用输入到单一类型输出的函数 的背景 这是一个延续映射无形状记录 https stackoverflow com questions 26375886 mapping over shapeless recor
  • VSTO 加载项中的 SetProcessDPIAware

    网上有很多关于通过调用为 Winforms 应用程序设置 DPI 感知的帖子SetProcessDPIAware 或者通过对应用程序的清单进行一些相关更改 例如 如何配置应用程序以在具有高 DPI 设置 例如 150 的计算机上正确运行 h
  • 移动应用程序在后台时的 GPS 位置(使用 ionicframework)

    我需要实现一个应用程序来存储用户从 A 移动到 B 时的旅程 路径 现在 我知道 ionicframework 可以使用 GPS 但是当我的应用程序转到后台时会发生什么 我的应用程序如何继续存储用户位置 这可能吗 有没有我可以使用的插件 请
  • 图表网格线样式

    我正在使用 Visual Studio 2010 中的标准图表库 该图表工作正常 但我无法更改轴网格线样式 这些是已在 Form1 Designers cs 中设置的属性 chartArea3 Name ChartArea1 this ch
  • 当我们尝试将字符打印为浮点数和十六进制时,为什么 printf 的行为不同?

    我尝试在 printf 中将字符打印为浮点数并得到输出 0 这是为什么 还 char c z printf f X c c 给出了一些奇怪的十六进制输出 而当我这样做时输出是正确的 printf X c 为什么会这样呢 The printf
  • 如何在 Microsoft Surface 应用程序中显示 PDF 文档?

    我想在我的 Microsoft Surface 应用程序中显示 PDF 文档 我做了一些搜索 发现了很多可能性 但如果在 Microsoft Surface 中使用 所有这些似乎都有一些缺点 这个有趣的 http www screencas
  • 有类似“Firebug for IE”(用于调试 JavaScript)之类的东西吗?

    我正在尝试修复一些 JavaScript 错误 在 Firefox 中工作时 Firebug 使调试这些问题变得更加容易 但是当代码在 Firefox 上运行正常但 IE 却抱怨时 你该怎么办 您还可以查看IE 开发者工具栏 http ww
  • 使用 GOOGLE MAP API 的简单 Android 程序

    尝试使用 Google 地图 这是我使用 google Map API 的第一个程序 由于日志错误 我无法执行 我需要纠正自己的地方 MainActivity java public class MainActivity extends A