我有一个Android应用程序,我正在使用谷歌地图.我使用调试密钥开发了这个,现在我需要使用发布证书,但我不知道怎么做,请帮忙.谢谢
我正在尝试使用MapView该类在我的Android应用程序中显示一个简单的地图.我onCreate在我的活动中使用以下方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
MapsInitializer.initialize(this);
} catch (GooglePlayServicesNotAvailableException e) {
Log.e("Address Map", "Could not initialize google play", e);
}
MapView mapView = new MapView(this);
CameraUpdate camPos = CameraUpdateFactory.newLatLng(new LatLng(11.562276,104.920292));
mapView.getMap().moveCamera(camPos);
setContentView(mapView);
}
Run Code Online (Sandbox Code Playgroud)
我有一个NullPointerException,因为该方法mapView.getMap()返回null.不明白为什么,谷歌播放服务显然存在并初始化.
我已经在我的应用程序中实现了android谷歌地图V2,它在我测试的大多数设备(Galaxy Ace Plus,Galaxy 7inch Tab,Sony Xperia Z)上运行良好.但它不适用于HTC Desire.我已经交叉验证了该设备中安装的Google Play服务.我很乐意找到解决方案.以下是我的实施.
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment fragment = new SupportMapFragment();
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, fragment).commit();
}
}
Run Code Online (Sandbox Code Playgroud)
下面是activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/the_map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:cameraTilt="45"
map:cameraZoom="2" />
Run Code Online (Sandbox Code Playgroud)
这是清单文件.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.raj.googlemapsv2test"
android:versionCode="1"
android:versionName="1.0" >
<permission
android:name="com.raj.googlemapsv2test.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.raj.googlemapsv2test.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" …Run Code Online (Sandbox Code Playgroud) android google-maps google-play-services google-maps-android-api-2
我在Android应用中使用Google Maps V2 API.我添加了一个方法,允许用户使用onMapLongClick放置一个可拖动的标记.我还计划将功能与SearchView小部件和Google Places结合使用.在这方面,我想限制用户能够在地图上只放置一个标记.如果他们调用任何一种方法再次放置标记,我希望现有标记将其位置更新为新输入.我已经研究了几天了,并且无法限制用户可以放置的标记数量1.关于如何实现这一点的任何想法?这是我现在使用的方法......
//onMapLongClick, create marker
@Override
public void onMapLongClick(LatLng point) {
map.addMarker(new MarkerOptions()
.position(point)
.title("Your Destination")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher))
.draggable(true));
}
Run Code Online (Sandbox Code Playgroud) 我是 android 新手,最近开始学习 Android,我试图通过其唯一的 android id 获取任何 android 设备的位置。这样我就可以通过 GPS 或网络提供商跟踪大约或确切的位置。具体来说,我的意思是,每当我在应用程序中输入任何 Android ID 时,我都可以在应用程序中获取设备位置。感谢您的热心帮助。
最近我尝试在Google Maps v2 for Android中使用Overlay,我们知道的一些教程
BitmapDescriptor image = BitmapDescriptorFactory.fromResource(R.drawable.android);
GroundOverlayOptions groundOverlay = new GroundOverlayOptions()
.image(image)
.position(point1, 500f)
.transparency(0.5f);
googleMap.addGroundOverlay(groundOverlay);
Run Code Online (Sandbox Code Playgroud)
我面临的问题是:我可以覆盖URL中的图像吗?喜欢:
BitmapDescriptor image = BitmapDescriptorFactory.fromResource(R.drawable.android);
GroundOverlayOptions groundOverlay = new GroundOverlayOptions()
.image(***"http://image path...."***)
.position(point1, 500f)
.transparency(0.5f);
googleMap.addGroundOverlay(groundOverlay);
Run Code Online (Sandbox Code Playgroud) google-maps google-maps-api-3 google-maps-api-2 google-maps-android-api-2
我对创建一个按钮感兴趣,该按钮将立即启动Google Maps应用并开始将导航驱动到特定地址。这可能吗?如果是这样,API是什么?
我希望它立即开始导航,而不会强迫用户在不同的路线选项之间进行选择。
android google-maps google-maps-api-3 google-maps-android-api-2 android-maps-v2
我有三项活动:
主要活动:
public void start_main_map(View view) {
Intent intent = new Intent(this, com.example.MainMap.class);
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
主地图:
protected GoogleApiClient mGoogleApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "onCreate");
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
protected void onStart() {
Log.i(TAG, "onStart");
mGoogleApiClient.connect();
super.onStart();
}
@Override
protected void onStop() {
Log.i(TAG, "onStop");
mGoogleApiClient.disconnect();
super.onStop();
}
@Override
protected void onPause() {
Log.i(TAG, "onPause");
super.onPause();
}
@Override
public void onResume() {
Log.i(TAG, "onResume");
super.onResume();
}
@Override
public void onMapReady(GoogleMap googleMap) {
Log.i(TAG, "onMapReady"); …Run Code Online (Sandbox Code Playgroud) 在Google Maps API for Android中,右上角有一个按钮,用于在地图中找到您.
我想知道是否有可能在Google Maps for Android的API中重新定位此默认图标,因为在顶部我计划添加一个EditText,就好像它是浮动的一样.
我在片段中有一张地图。我正在尝试将相机移动到特定位置(在全局布局上):
@Override
public void onGlobalLayout() {
getMapView().getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(final GoogleMap googleMap) {
LocationManager.onLocation(new CoordinatesCallback() {
@Override
public void onCoordinates(double latitude, double longitude) {
LatLng target = new LatLng(latitude, longitude);
CameraPosition position = CameraPosition
.builder()
.target(target)
.zoom(10)
.build();
CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(position);
googleMap.moveCamera(cameraUpdate);
}
});
}
});
}
Run Code Online (Sandbox Code Playgroud)
getMapView()返回我的地图视图,纬度/经度完全有效(将它们输入地图,这是我的家),尝试了moveCamera和animateCamera,也尝试了newLatLngZoom方法,但无济于事。我得到的只是一个空的地图视图:
我究竟做错了什么?
更新:我的应用程序的各个部分都有其他地图,它们工作得很好。
我正在尝试使用每个MapView内部实现包含CardViews的RecyclerView.问题是,在自定义适配器中初始化的MapView不会加载,除非您单击它.正如这里已经提到的:Android MapView不会加载,除非您触摸mapview, 您可以通过覆盖onResume()来解决问题.我试过以下方式:
@Override
public void onResume() {
if(LocationsAdapter.ViewHolder.mapView != null) {
LocationsAdapter.ViewHolder.mapView.onResume();
}
super.onResume();
}
Run Code Online (Sandbox Code Playgroud)
老实说,我根本不知道如何以任何其他方式覆盖onResume,如果我在这里打破了某些编程规则,请原谅我.我将mapView作为在LocationsAdapter中创建的ViewHolder中的公共静态.这似乎不起作用,地图仍然是空白.
Adapter内的ViewHolder实现了OnMapReadyCallback.
public static class ViewHolder extends RecyclerView.ViewHolder implements OnMapReadyCallback
...
@Override
public void onMapReady(GoogleMap googleMap) {
this.googleMap = googleMap;
Location location = locations.get(getAdapterPosition());
this.googleMap.addMarker(new MarkerOptions().position(location.getLatlng()).title(location.getName()));
this.googleMap.moveCamera(CameraUpdateFactory.newLatLng(location.getLatlng()));
this.googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(location.getLatlng(), 7.0f));
}
Run Code Online (Sandbox Code Playgroud)
调用ViewHolder时会调用这两个方法.
mapView.onCreate(null);
mapView.getMapAsync(this);
Run Code Online (Sandbox Code Playgroud)
另一篇提到这个问题的文章还没有答案:cardview里面的mapView没有加载地图.
我的目标是,无论片段当前处于什么生命周期,都要加载映射.我假设您不需要适配器,片段和XML来解决此问题.如果你这样做,请告诉我.
android android-mapview google-maps-android-api-2 android-recyclerview