标签: android-maps

使用com.google.android.gms.maps.MapFragment的另一个片段复制ID,标记null或父ID

我有一个带有三个标签的应用程序.

每个选项卡都有自己的布局.xml文件.main.xml有自己的地图片段.这是应用程序首次启动时显示的那个.

除了在标签之间切换时,一切正常.如果我尝试切换回地图片段选项卡,我会收到此错误.切换到其他选项卡之间和之间的工作正常.

这可能有什么问题?

这是我的主类和我的main.xml,以及我使用的相关类(你也会在底部找到错误日志)

主要班级

package com.nfc.demo;

import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.widget.Toast;

public class NFCDemoActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ActionBar bar = getActionBar();
        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);

        bar.addTab(bar
                .newTab()
                .setText("Map")
                .setTabListener(
                        new TabListener<MapFragment>(this, "map",
                                MapFragment.class)));
        bar.addTab(bar
                .newTab()
                .setText("Settings")
                .setTabListener(
                        new TabListener<SettingsFragment>(this, "settings",
                                SettingsFragment.class)));
        bar.addTab(bar
                .newTab()
                .setText("About")
                .setTabListener(
                        new TabListener<AboutFragment>(this, "about",
                                AboutFragment.class)));

        if (savedInstanceState != null) {
            bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
        }
        // setContentView(R.layout.main);

    }

    @Override
    protected void onSaveInstanceState(Bundle …
Run Code Online (Sandbox Code Playgroud)

android illegalargumentexception android-maps android-fragments

325
推荐指数
6
解决办法
11万
查看次数

如何在地图uri Intent发布的地图中显示标记?

我有一个应用程序,我希望通过启动带有特定地理坐标的Google地图来显示不同的位置(当时一个,由用户输入选择).

我目前正在使用这个:(当然是真正的纬度和长值.)

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?z=17"));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

这完全是我想要的,除了它没有显示指定点的任何指示符或标记.它只位于它的位置.

有没有办法在不使用MapView的情况下获取标记或其他内容?

android google-maps android-intent android-maps

105
推荐指数
4
解决办法
7万
查看次数

Google Maps Android API v2授权失败

我的步骤:

  • 从debug.keystore获取SHA1代码
  • 在谷歌apis控制台中创建应用程序
  • 启用了谷歌地图api v2
  • 输入SHA1; my.package.name
  • 获取API密钥
  • 创建AndroidManifest文件:

        <permission
                android:name="my.package.name.permission.MAPS_RECEIVE"
                android:protectionLevel="signature"/>
    
        <uses-permission android:name="my.package.name.permission.MAPS_RECEIVE"/>
    
        <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/>
    
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
        <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    
        <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
    
        <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:hardwareAccelerated="true">
    
            <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="MY_API_KEY_HERE" />
    
            <activity android:name="MyActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
        </application>
    </manifest>
    
    Run Code Online (Sandbox Code Playgroud)
  • 创建布局

  • 把"google-play-services.jar"放到libs上

编译后我崩溃了:

  ERROR/AndroidRuntime(10182): FATAL EXCEPTION: main
                java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
                at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
                at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
                at android.app.Activity.onCreateView(Activity.java:4716)
                at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
                at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
                at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
                at android.app.Activity.setContentView(Activity.java:1881) …
Run Code Online (Sandbox Code Playgroud)

android google-maps android-maps google-maps-android-api-2

92
推荐指数
6
解决办法
13万
查看次数

片段中的MapView(Honeycomb)

既然最终的SDK已经推出google apis - 使用MapView创建片段的最佳方法是什么?MapView需要MapActivity才能正常工作.

让管理片段的Activity继承自MapActivity(糟糕的解决方案,因为它违背了Fragments自包含的想法)并使用常规的基于xml的布局不起作用.我在MapActivity.setupMapView()中得到一个NullPointerException:

E/AndroidRuntime(  597): Caused by: java.lang.NullPointerException
E/AndroidRuntime(  597):    at com.google.android.maps.MapActivity.setupMapView(MapActivity.java:400)
E/AndroidRuntime(  597):    at com.google.android.maps.MapView.(MapView.java:289)
E/AndroidRuntime(  597):    at com.google.android.maps.MapView.(MapView.java:264)
E/AndroidRuntime(  597):    at com.google.android.maps.MapView.(MapView.java:247)

我的第二个想法是以编程方式创建MapView并将关联的活动(通过getActivity())作为Context传递给MapView构造函数.不起作用:

E/AndroidRuntime(  834): Caused by: java.lang.IllegalArgumentException: MapViews can only be created inside instances of MapActivity.
E/AndroidRuntime(  834):    at com.google.android.maps.MapView.(MapView.java:291)
E/AndroidRuntime(  834):    at com.google.android.maps.MapView.(MapView.java:235)
E/AndroidRuntime(  834):    at de.foo.FinderMapFragment.onCreateView(FinderMapFragment.java:225)
E/AndroidRuntime(  834):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:708)
E/AndroidRuntime(  834):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:900)
E/AndroidRuntime(  834):    at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:978)
E/AndroidRuntime(  834):    at android.app.Activity.onCreateView(Activity.java:4090)
E/AndroidRuntime(  834):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:664)

真的应该有类似MapFragment的东西来处理MapView需要的后台线程我猜...那么目前最好的做法是什么呢?

感谢和问候来自德国,Valentin

android google-maps android-maps android-fragments android-3.0-honeycomb

81
推荐指数
4
解决办法
4万
查看次数

ScrollView中的MapView?

我想在ScrollView中有一个MapView,但是当我尝试滚动地图时,ScrollView优先考虑!有什么方法可以在地图内部滚动时赋予MapView优先级,而ScrollView则不然?

谢谢!

android google-maps android-maps

64
推荐指数
6
解决办法
3万
查看次数

移动MapFragment(SurfaceView)会导致黑色背景闪烁

我正在尝试实施新的Android Google Maps API(v2).然而,它与SlidingMenu似乎并不顺利.如您所知,MapFragment实施基于SurfaceView.问题是SurfaceView它不喜欢移动它 - 我的意思是把它放在可移动的视图中:

移动它时,它会在其像素最初放置的位置留下黑洞.它看起来像这样.

通过在其上指定透明背景SurfaceView或者甚至在其上放置透明可以部分地解决该问题View.我只是无法想象,如果只是对我来说结果是不可接受的,或者我有一个不同的问题,使它看起来如何.

要查看它的外观,请观看此视频.

(对不起质量,但无论如何都可以轻松看到问题)

当打开时拉开正常的列表视图(橙色屏幕)时SlidingMenu,动画很流畅.但是一MapFragment出现,地图上就会出现一些奇怪的刷新/闪烁/同步问题.

在HTC One S和三星Galaxy ACE上测试过.


我解决它的超级疯狂的想法:每次开始动画开始时,截取MapFragment(应该可以使用SurfaceView)并在动画期间将其放置.但我真的不知道该怎么做...... 拍摄地图的截图是不可能的,但也许有人会从中受到启发.

或者也许禁用以其他方式重绘地图,我不知道.


更新:

发现了这个.

看起来SurfaceView可以更改为TextureView以消除这些限制.但由于MapFragment基于SurfaceView,我不知道它是否可以实现.

另一个更新 似乎此问题已在4.1+设备上得到解决.他们只使用了TextureView.但在较低版本中,我们仍然需要使用变通方法.

android surfaceview android-maps mapfragment android-maps-v2

53
推荐指数
2
解决办法
2万
查看次数

如何使相机居中,使标记位于屏幕的底部?(谷歌地图api V2 Android)

单击标记时,摄像机的默认行为是将其置于屏幕中心,但由于我通常在信息窗口中有长文本描述,因此实际更改摄像机位置以使标记位于底部时更方便屏幕(使信息窗口位于屏幕中央).我想我应该能够通过覆盖onMarkerClick函数来做到这一点(当此函数返回true时,默认行为被取消)

@Override

public boolean onMarkerClick(final Marker marker) {


    // Google sample code comment : We return false to indicate that we have not

    // consumed the event and that we wish
    // for the default behavior to occur (which is for the camera to move
    // such that the
    // marker is centered and for the marker's info window to open, if it
    // has one).

    marker.showInfoWindow();

            CameraUpdate center=
                CameraUpdateFactory.newLatLng(new LatLng(XXXX,
                                                         XXXX));
            mMap.moveCamera(center);//my question is how to get this center …
Run Code Online (Sandbox Code Playgroud)

android google-maps android-maps

43
推荐指数
4
解决办法
3万
查看次数

Android:在Google地图中设置缩放级别以包含所有标记点

我试图在android中设置地图的缩放级别,使其包含我列表中的所有点.我正在使用以下代码.

int minLatitude = Integer.MAX_VALUE;
int maxLatitude = Integer.MIN_VALUE;
int minLongitude = Integer.MAX_VALUE;
int maxLongitude = Integer.MIN_VALUE;

// Find the boundaries of the item set
// item contains a list of GeoPoints
for (GeoPoint item : items) { 
    int lat = item.getLatitudeE6();
    int lon = item.getLongitudeE6();

    maxLatitude = Math.max(lat, maxLatitude);
    minLatitude = Math.min(lat, minLatitude);
    maxLongitude = Math.max(lon, maxLongitude);
    minLongitude = Math.min(lon, minLongitude);
}
objMapController.zoomToSpan(
    Math.abs(maxLatitude - minLatitude), 
    Math.abs(maxLongitude - minLongitude));
Run Code Online (Sandbox Code Playgroud)

这有时会奏效.但是有时候某些点没有显示,我需要缩小以查看这些点.有什么方法可以解决这个问题吗?

android google-maps android-maps

42
推荐指数
2
解决办法
3万
查看次数

来自CameraPosition的Google Maps API v2:LatLngBounds

是否有一种简单的方法LatLngBounds可以从CameraPositionAndroid Google Maps API v2中获取可见地图,以便我可以使用它OnCameraChangeListener来获取标记的新数据.

mMap.setOnCameraChangeListener(new OnCameraChangeListener() {
            @Override
            public void onCameraChange(CameraPosition position) {
                LatLngBounds bounds = ?;
                fetchNewData(bounds);
            }
        });
Run Code Online (Sandbox Code Playgroud)

android google-maps android-maps

40
推荐指数
2
解决办法
3万
查看次数

使用Google Places API

我想开发一个应用程序,我希望通过获取当前位置来显示用户附近(1公里内)附近地点的信息.

比如说我想显示有关距离Android设备当前位置1公里范围内的餐馆,购物中心,医院的信息.

我已经浏览了这个链接:在Android中使用Google Places API ..但没有得到更多.

有没有人在Android中使用过Google Places API?

android android-maps android-layout

34
推荐指数
2
解决办法
6万
查看次数