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

使用Android Google Maps Api v2打开街道地图

是否可以在Android上使用新的Google Maps V2 Api打开街道地图提供商?如果是这样,您能提供示例或文档吗?我已经快速查看了文档并找到了UrlTileProvider(),所以看起来这很可能.

奖励:只是使用MapFragment类,OSM图块仍然受Google Maps TOS的约束?

android google-maps openstreetmap google-maps-mobile google-maps-android-api-2

15
推荐指数
1
解决办法
8684
查看次数

谷歌地图代码中的BadParcelableException

运行稍微修改过的Google地图示例会引发BadParcelableExceptionGoogle地图代码.这个LatLng班是可以分配的,但却无法找到.谷歌地图代码似乎试图取消没有被它包围的对象.什么情况下的问题?

package com.example.mapdemo;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

import android.os.Bundle;

public class RawMapViewDemoActivity extends android.support.v4.app.FragmentActivity {
    private MapView mMapView;

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

        mMapView = (MapView) findViewById(R.id.map);
        mMapView.onCreate(savedInstanceState);
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        mMapView.onSaveInstanceState(outState);

        outState.putParcelable("marker", new LatLng(0, 0));
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);

        LatLng ll = savedInstanceState.getParcelable("marker");
    }
}
Run Code Online (Sandbox Code Playgroud)

...

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity 
    ComponentInfo{com.example.mapdemo/com.example.mapdemo.RawMapViewDemoActivity}: 
    android.os.BadParcelableException: ClassNotFoundException when unmarshalling: …
Run Code Online (Sandbox Code Playgroud)

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

15
推荐指数
3
解决办法
5638
查看次数

谷歌地图Android API v2,如何从地图中删除折线?

我想删除以前添加的折线并在更改位置时重新绘制新的折线.我试过了两个

this.routeToDestination.setPoints(pointsToDestination)和this.routeToDestination.remove()

但他们都没有工作.

我按照如何用Google Maps Android API v2绘制动态线(路线)但无法解决问题

    @Override
    public void onResume() {
        super.onResume();

        routeToDestination = mMap.addPolyline(new PolylineOptions()
                .add(new LatLng(location.getLatitude(), location.getLongitude()),
                        new LatLng(this.destinationLatitude, this.destinationLongitude))
                .width(1)
                .color(Color.DKGRAY)

        );
    }

   @Override
    public void onLocationChanged(Location location) {

        List<LatLng> pointsToDestination = new ArrayList<LatLng>();
        pointsToDestination.add(new LatLng(location.getLatitude(), location.getLongitude()));
        pointsToDestination.add(new LatLng(destinationLatitude, destinationLongitude));

        this.routeToDestination.setPoints(pointsToDestination);
    }

}
Run Code Online (Sandbox Code Playgroud)

android google-maps-android-api-2

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

Google Maps Android v2中的群集标记

我必须从Google Maps Android v2 API在GoogleMap上放置不同的标记.问题是多个标记设置为相同的位置(lat/lng),因此用户只能看到"最新"标记.

是否有可能(在最好的情况下:库)从同一区域聚类不同的标记(相对于缩放级别)?

我已经阅读过有关MarkerClusterer的内容,但这是专为JavaScript API设计的.

android markerclusterer google-maps-android-api-2

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

缩放以适应地图上的所有标记谷歌地图v2

我想设置地图缩放级别以适合地图上的所有标记.我使用了许多人所说的方法,但它不适合我.它显示了一些其他观点.

if (positions.size() > 0) {

    final LatLngBounds.Builder builder = new LatLngBounds.Builder();
    for (Marker m : positions) {
        builder.include(m.getPosition());
    }
    builder.include(positions.get(i).getPosition());
}

try {
    googleMap.setOnCameraChangeListener(new OnCameraChangeListener() {

        @Override
        public void onCameraChange(CameraPosition arg0) {

            googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(
                    builder.build(), UserDataManager.getInstance().getWidth(), 
                    UserDataManager.getInstance().getWidth(),0));
            googleMap.setOnCameraChangeListener(null);

        }
    });

} catch (IllegalStateException e) {
    // TODO: handle exception
    final View mapView = getSupportFragmentManager()
            .findFragmentById(R.id.map).getView();
    if (mapView.getViewTreeObserver().isAlive()) {
        mapView.getViewTreeObserver().addOnGlobalLayoutListener(
            new OnGlobalLayoutListener() {

                // We check which build version we are using.
                @Override
                public void onGlobalLayout() {
                    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) …
Run Code Online (Sandbox Code Playgroud)

android zoom marker google-maps-android-api-2

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

将String转换为LatLng

我正在使用Google Maps API v2,我从我需要转换为LatLng的SharedPreferences中获取位置坐标单个字符串"-34.8799074,174.7565664".

有人可以帮忙吗?

谢谢!

android google-maps-android-api-2

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

如何在Google Maps API for Android中自动放大到当前位置?

我已经在Android Studio中集成了Google Maps API,它也找到了当前位置,但我想提高缩放级别,以便我可以更清晰地查看当前位置并进行精确定位.如何提高缩放级别?

你可以在下面找到我的代码:

package com.example.umar.testgoogle;

import android.location.Location;

import android.content.IntentSender;
import android.location.Location;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements
    GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener,
    LocationListener {

    public static final String TAG = MapsActivity.class.getSimpleName();

    /*
     * Define a request code to send to Google Play services
     * This code is returned in Activity.onActivityResult
     */
    private final static int …
Run Code Online (Sandbox Code Playgroud)

android google-maps-android-api-2

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

放大特定路线谷歌地图

在此输入图像描述下面是屏幕截图@antonio我删除线后得到的

我有一个随机纬度和经度点的列表,我正在他们之间绘制一条路线.我的问题是如何在谷歌地图中绑定这条路线,我在实用方法下面做了

public static void drawRouteIntoMap(final List<? extends MapHelper> position, final GoogleMap googleMap) {
    /*List<MapHelper> position = new ArrayList<MapHelper>();
    for (int i = lastPosition; i < maps.size(); i++) {
        position.add(maps.get(i));
    }*/
    if (position.size() > 0 && Validator.isNotNull(googleMap)) {
        googleMap.clear();
        List<PolylineOptions> polylineOptionses = new ArrayList<PolylineOptions>();
        PolylineOptions option = null;
        Boolean lastPause = null;
        for (MapHelper map : position) {
            if (map.isPause()) {
                if (Validator.isNull(lastPause) || !lastPause) {
                    option = new PolylineOptions().width(5).color(Color.rgb(255, 0, 155)).geodesic(true);
                    polylineOptionses.add(option);
                }
                option.add(new LatLng(map.getLatitude(), map.getLongitude()));
            } else {
                if …
Run Code Online (Sandbox Code Playgroud)

android polyline marker google-maps-android-api-2

15
推荐指数
2
解决办法
6364
查看次数

创建叠加ImageView动画谷歌地图

我正在尝试使我的叠加图像执行以下操作:

  • onMap/onDrag的地图,在地图中间显示一个恒定的图像,这是一个图钉
  • onTouchUp,将标记图像更改为加载标记,一旦数据加载完成,将图像加载到带有文本的新图像.

这是一个非常类似于我的问题的解决方案:

animatedMarker

到目前为止我做了什么?

  • 在我的谷歌地图中间放置了一个图像视图,并获得了使用mMap.getCameraPosition().target 该图像的图像,使用它可以得到大约中间位置坐标 setOnCameraChanged,我知道已经弃用了,还有更好的解决方案吗?
  • 剩下的部分我无法弄清楚,虽然我已经阅读了几个SO问题,声称他们已经实现了将framelayout包装在谷歌地图的片段上,并在其上应用onTouch,但也无法找到对它的正确答案.

所有这一切发生的我的xml片段如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".fragments.MovableMapFragment">

    <fragment
        android:id="@+id/map_frag_fmm"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/tablayout_global_tabs"
        android:layout_alignParentTop="true" />
<! -- long xml ahead -->
Run Code Online (Sandbox Code Playgroud)

有人知道如何实现这种行为吗?

android google-maps imageview android-animation google-maps-android-api-2

15
推荐指数
2
解决办法
1288
查看次数

使用android google maps v2添加标记到地图的代码

我有来自database.how的lat和long值,使用android google map api v2显示基于lat和long值的标记.在原始的android google地图中,我们根据概念itemoverlay显示标记.在v2中,我不知道如何显示标记.

    dbAdapter.open();
        Cursor points = dbAdapter.clustercall(Btmlft_latitude, toprgt_latitude,
                Btmlft_longitude, toprgt_longitude, gridsize1);
        int c = points.getCount();
        Log.d("count of points", "" + c);

        if (points != null) {
            if (points.moveToFirst()) {
                do {

                    int latitude = (int) (points.getFloat(points
                            .getColumnIndex("LATITUDE")) * 1E6);
                    int longitude = (int) (points.getFloat(points
                            .getColumnIndex("LONGITUDE")) * 1E6);

                    mapView.addMarker(new MarkerOptions().position(
                            new LatLng(latitude, longitude)).icon(
                            BitmapDescriptorFactory.defaultMarker()));

                } while (points.moveToNext());

            }
        }
        points.close();
        dbAdapter.close();
Run Code Online (Sandbox Code Playgroud)

那是mycode.我从数据库获取lat和long值,但是如何根据lat和long值添加标记来映射.

我阅读了android google maps api v2.In,它只提供了静态添加的标记数据

android google-maps-android-api-2

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