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

如何在Android Marshmallow上的Google地图上显示当前位置?

我想谷歌地图显示用户的位置.我尝试了这段代码,但它在Android 6上无效.

private GoogleMap map;
LocationManager lm;
LocationListener ll;
Location l;

LatLng pos;

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

    lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
    ll = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
            l = (Location) location;
        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {}

        @Override
        public void onProviderEnabled(String provider) {}

        @Override
        public void onProviderDisabled(String provider) {}
    };

    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.nMap);
    mapFragment.getMapAsync(this);
}

@Override
public void onMapReady(GoogleMap googleMap) {
    map = …
Run Code Online (Sandbox Code Playgroud)

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

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

捕获GoogleMap Android API V2的屏幕截图

最后更新

功能请求已由Google完成.请在下面看到这个答案.

原始问题

使用旧版Google Maps Android API,我能够捕获谷歌地图的屏幕截图,通过社交媒体分享.我使用以下代码捕获屏幕截图并将图像保存到文件中并且效果很好:

public String captureScreen()
{
    String storageState = Environment.getExternalStorageState();
    Log.d("StorageState", "Storage state is: " + storageState);

    // image naming and path  to include sd card  appending name you choose for file
    String mPath = this.getFilesDir().getAbsolutePath();

    // create bitmap screen capture
    Bitmap bitmap;
    View v1 = this.mapView.getRootView();
    v1.setDrawingCacheEnabled(true);
    bitmap = Bitmap.createBitmap(v1.getDrawingCache());
    v1.setDrawingCacheEnabled(false);

    OutputStream fout = null;

    String filePath = System.currentTimeMillis() + ".jpeg";

    try 
    {
        fout = openFileOutput(filePath,
                MODE_WORLD_READABLE);

        // Write the string …
Run Code Online (Sandbox Code Playgroud)

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

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

如何在Android Google Maps API v2中将LatLng和半径转换为LatLngBounds?

我相信这是最近的Google Maps API v2的限制.他们最近添加了在地面上绘制圆圈的功能 - 但是如果你想要将摄像机定位为显示整个圆圈,则无法这样做.

可以调用CameraUpdateFactory#newLatLngBounds(bounds,padding),其中"bounds"是LatLngBounds,"padding"是以像素为单位的距离.问题是无法在LatLngBounds中创建LatLng和半径.

LatLngBounds的构造函数只接受2个LatLng实例并生成一个矩形,其中这些是NW和SE角.

android google-maps-android-api-2

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

错误:无法将MapFragment强制转换为android.support.v4.app.Fragment

首先,我在这里观察:从Activity启动FragmentActivity,现在我遇到以下问题:

MapsActivity:

public class MapsActivity extends FragmentActivity {

private GoogleMap mMap;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.maps);
    setUpMapIfNeeded();
}
...
Run Code Online (Sandbox Code Playgroud)

并希望通过以下方式将其从MainActivity中启动:

startActivity(new Intent(this, MapsActivity.class));
Run Code Online (Sandbox Code Playgroud)

该活动已在Android Manifest中注册:

<activity android:name="de.xbjoernx.gapp.MapsActivity"></activity>
Run Code Online (Sandbox Code Playgroud)

错误

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{de.xbjoernx.gapp/de.xbjoernx.gapp.MapsActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
        at android.app.ActivityThread.access$600(ActivityThread.java:153)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5227)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
        at dalvik.system.NativeStart.main(Native Method) …
Run Code Online (Sandbox Code Playgroud)

android google-maps-android-api-2

45
推荐指数
1
解决办法
3万
查看次数

如何使用Google Maps for Android V2处理地图移动结束?

我想在地图中心更改后立即对地址进行地理编码.

如何使用适用于Android V2的新Google地图处理地图moveend?(我正在谈论案例,然后用户通过手指拖动地图)

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

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

我应该使用MapView还是MapFragment

我不确定我是应该使用MapView还是坚持使用MapFragment.我的应用程序是一个应用程序,可以找到离您最近的最近的一组位置.我希望能够在按下标记时添加位置,显示标记的详细信息,以及当用户沿着地图移动时我希望能够获取地图中心的坐标并显示定义中的最近位置半径.如果我继续使用,MapFragments或者MapView在我还有机会的时候切换到,我会处于不利地位吗?

android google-maps android-mapview mapfragment google-maps-android-api-2

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

改变标记的颜色 - Google Map V2 Android

我在理解如何更改Android Google Map项目中标记的颜色方面遇到了一些麻烦.

我的标记代码是:

googlemap.addMarker(new MarkerOptions()
    .position(new LatLng( 65.07213,-2.109375))
    .title("This is my title"))
    .setSnippet("and snippet");
    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));
Run Code Online (Sandbox Code Playgroud)

当我在最后一行输入.icon代码时出现此错误,否则.position,.title并且.setSnippet工作得很好并且在地图上可见.

无法在原始类型void上调用图标(BitmapDescriptor)

这些导入以及:

import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
Run Code Online (Sandbox Code Playgroud)

但是没有添加任何其他内容.我是否错过了重要部分?

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

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

Google Maps Android API v2 - 示例代码崩溃

我正在尝试使用Android"Google Maps Android API v2" 的示例代码.我没有错误地构建项目.但是,当我尝试在我的Galaxy Nexus上运行应用程序(与usb连接到我的笔记本电脑)时,应用程序立即崩溃.

  • 我在AndroidManifest.xml上填写了我自己的Maps API密钥
  • 我是针对Android 4.1.2构建的

这是日志记录:

Unable to resolve superclass of Lcom/example/mapdemo/BasicMapActivity; (66) 
Link of class 'Lcom/example/mapdemo/BasicMapActivity;' failed 
Could not find class 'com.example.mapdemo.BasicMapActivity', referenced from method com.example.mapdemo.MainActivity.<clinit> 
VFY: unable to resolve const-class 108 (Lcom/example/mapdemo/BasicMapActivity;) in Lcom/example/mapdemo/MainActivity; 
VFY: replacing opcode 0x1c at 0x000d 
Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/example/mapdemo/MainActivity; 
Class init failed in newInstance call (Lcom/example/mapdemo/MainActivity;) 
Shutting down VM 
threadid=1: thread exiting with uncaught exception (group=0x41ac9930) 
FATAL EXCEPTION: main 
java.lang.ExceptionInInitializerError
at java.lang.Class.newInstanceImpl(Native Method) …
Run Code Online (Sandbox Code Playgroud)

crash maps android sample google-maps-android-api-2

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

Android:自动选择调试/发布Maps v2 api密钥?

我在我的项目中使用Google Maps v2 API.在Google Maps v2中,调试/发布API密钥定义于AndroidManifest.xml.我已经看到了链接,但在该映射键中是在xml布局文件中定义的AndroidManifest.xml.那么我可以为我的项目定义调试和释放密钥AndroidManifest.xml吗?

我想要这样的东西AndroidManifest.xml:

如果是调试模式:

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="@string/debug_map_api_key"/>
Run Code Online (Sandbox Code Playgroud)

如果发布模式:

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="@string/release_map_api_key"/>
Run Code Online (Sandbox Code Playgroud)

android google-maps key android-manifest google-maps-android-api-2

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

添加边界以避免在特定区域外滑动

我的应用程序显示了一张地图,我希望用户无法滑过某个区域.所以我试图添加边界,但它会使应用程序崩溃.这是工作代码:

public class MapViewer extends Activity implements OnInfoWindowClickListener {
    private LatLng defaultLatLng = new LatLng(42.564241, 12.22759);
    private GoogleMap map;
    private int zoomLevel = 5;
    private Database db = new Database(this);

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mapviewer);

        try {
            map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
            if (map != null) {
                map.setMyLocationEnabled(true);
                map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
                map.getUiSettings().setRotateGesturesEnabled(false);

                map.moveCamera(CameraUpdateFactory.newLatLngZoom(defaultLatLng, zoomLevel));

                this.addMerchantMarkers(new MarkerOptions());

                map.setOnInfoWindowClickListener(this);
            }
        } catch (NullPointerException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onPause() {
        if (map != null) {
            map.setMyLocationEnabled(false);
            map.setTrafficEnabled(false);
        }
        super.onPause();
    } …
Run Code Online (Sandbox Code Playgroud)

android google-maps-android-api-2

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