无法在片段中创建谷歌地图

时间:2015-07-02 15:43:16

标签: java android google-maps android-fragments google-maps-android-api-2

我已经查看了关于此主题的大约10个stackoverflow页面,但没有一个解决方案能帮助我。我已经复制了this post中第一个答案的代码,但我仍然遇到很多错误。我想要的是在名为MapFragment的类中创建地图,然后将其显示在应用的标签中。

截至目前,这是我的代码: 爪哇:

public class MapFragment extends Fragment {
    private static final String ARG_SECTION_NUMBER = "section_number";
    private final LatLng HAMBURG = new LatLng(53.558, 9.927);   //Error: cannot resolve symbol 'LatLng'
    private final LatLng KIEL = new LatLng(53.551, 9.993);      //Error: cannot resolve symbol'LatLng'
    private GoogleMap map;                    //Error: cannot resolve symbol GoogleMap

    public MapFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        View rootView = inflater.inflate(R.layout.fragment_map, container, false);

        map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();      //Error:cannot resolve symbol 'SupportMapFragment'

        Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG)
                .title("Hamburg"));                          //Error:cannot resolve symbol 'Marker' or 'MarkerOptions' or method 'addMarker'
        Marker kiel = map.addMarker(new MarkerOptions()      //Error:cannot resolve symbol 'Marker' or 'MarkerOptions' or method 'addMarker'
                .position(KIEL)
                .title("Kiel")
                .snippet("Kiel is cool")
                .icon(BitmapDescriptorFactory
                .fromResource(R.drawable.ic_launcher)));

        // Move the camera instantly to hamburg with a zoom of 15.
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(HAMBURG, 15));    //Error:cannot resolve symbol 'CameraUpdateFactory' or method 'moveCamera'

        // Zoom in, animating the camera.
        map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);//Error:cannot resolve symbol 'CameraUpdateFactory' or method 'animateCamera'

        //...

        return rootView;
    }
}

XML:

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

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

</RelativeLayout>

清单:

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

    <permission
        android:name="com.example.lastgmap.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.lastgmap.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".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>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="MY_API_KEY" />

    </application>

</manifest>

我的依赖项:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile 'com.google.android.gms:play-services:7.5.0'
}

我不明白发生了什么。是否有一些导入我缺少类我需要剪切和粘贴才能使这项工作?在不同的教程中,他们让我导入了这个

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;

但在这两行中我收到错误cannot resolve symbol 'android'

我目前正在使用android studio。 API密钥是在我的实际计算中输入的,我刚从堆栈溢出帖子中删除它。

2 个答案:

答案 0 :(得分:1)

在我们处理Google地图时,请注意以下步骤。

确保添加 Google Play服务库图书馆项目。

如果你确定上面的步骤仍然没有解决问题 请更新 Google Play服务库 SDK Manager

如果您更新了库,但仍然无法解决问题,请执行清除重建项目。

如果你已经执行了上述步骤,但问题仍然没有解决,请重新启动 Eclipse ,但有时它会神奇地起作用。

希望它会对你有所帮助。

答案 1 :(得分:0)

您需要在问题中添加更多详细信息。 - 你使用Android Studio还是Eclipse? - 您是否将谷歌地图的密钥添加到清单中。 - 如果使用Android Studio,您是否将google play服务的依赖项添加到您的gradle构建文件中?可能是因为你忘了添加依赖,所以编译器找不到你的类