是否可以在Android上使用新的Google Maps V2 Api打开街道地图提供商?如果是这样,您能提供示例或文档吗?我已经快速查看了文档并找到了UrlTileProvider(),所以看起来这很可能.
奖励:只是使用MapFragment类,OSM图块仍然受Google Maps TOS的约束?
android google-maps openstreetmap google-maps-mobile google-maps-android-api-2
运行稍微修改过的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) 我想删除以前添加的折线并在更改位置时重新绘制新的折线.我试过了两个
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) 我必须从Google Maps Android v2 API在GoogleMap上放置不同的标记.问题是多个标记设置为相同的位置(lat/lng),因此用户只能看到"最新"标记.
是否有可能(在最好的情况下:库)从同一区域聚类不同的标记(相对于缩放级别)?
我已经阅读过有关MarkerClusterer的内容,但这是专为JavaScript API设计的.
我想设置地图缩放级别以适合地图上的所有标记.我使用了许多人所说的方法,但它不适合我.它显示了一些其他观点.
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) 我正在使用Google Maps API v2,我从我需要转换为LatLng的SharedPreferences中获取位置坐标单个字符串"-34.8799074,174.7565664".
有人可以帮忙吗?
谢谢!
我已经在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) 我有一个随机纬度和经度点的列表,我正在他们之间绘制一条路线.我的问题是如何在谷歌地图中绑定这条路线,我在实用方法下面做了
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) 我正在尝试使我的叠加图像执行以下操作:
这是一个非常类似于我的问题的解决方案:
到目前为止我做了什么?
mMap.getCameraPosition().target
该图像的图像,使用它可以得到大约中间位置坐标
setOnCameraChanged,我知道已经弃用了,还有更好的解决方案吗?所有这一切发生的我的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
我有来自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,它只提供了静态添加的标记数据