我在我的Android应用程序中使用谷歌地图.我已经创建了密钥并在清单文件中添加了必要的权限.但很快我启动应用程序,我在调试器中收到此消息:
GoogleService初始化失败,状态:10,缺少预期资源:'R.string.google_app_id'用于初始化Google服务.可能的原因是缺少google-services.json或com.google.gms.google-services gradle插件.
我不确定什么是错的.地图工作正常,我可以毫无问题地使用它.我的gradle文件有这个条目:
编译'com.google.android.gms:play-services:8.4.0'
什么是抱怨,我该如何缓解它?
我正在使用谷歌地图Android API v2,我需要一种方法来获取"我的位置"按钮的位置.
我得到这样的"我的位置"按钮:
GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
final GoogleMap map = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map)).getMap();
// This gets the button
map.setMyLocationEnabled(true);
Run Code Online (Sandbox Code Playgroud) 我想使用TileProvider最新Android Maps API(v2)的新功能覆盖一些自定义磁贴GoogleMap.但是由于我的用户很多时候都不会上网,我想把瓷砖存储在设备上的zipfile /文件夹结构中.我将使用Maptilerwith 生成我的瓷砖geotiffs.我的问题是:
我正在创建一个应用程序,用户需要走到地图上的某个点.但是他们需要找到一条通往他们自己的路线.我创建了一个带标记的地图,但默认情况下,如果用户点击标记,则会显示"开始导航"和"谷歌地图中的视图"选项.是否可以禁用这些选项?

标记点击时显示的选项
android google-maps-markers google-maps-android-api-2 android-maps-v2
如何在GoogleMap上将当前缩放级别作为整数获取.我需要从GMaps v1.1获取此代码:
MapView mGoogleMapView;
int zoomLevel = mGoogleMapView.getZoomLevel();
Run Code Online (Sandbox Code Playgroud)
我知道方法getMinZoomLevel()和getMaxZoomLevel()但是我在Android GMap V2文档中找不到任何可以提供当前缩放级别的内容.有没有人有关于如何做到这一点的任何指示?
任何帮助,将不胜感激.
当我第二次打开我的SupportMapFragment(Android maps v2)(调用setContentView)时,我收到以下错误:
01-28 16:27:21.374: E/AndroidRuntime(32743): FATAL EXCEPTION: main
01-28 16:27:21.374: E/AndroidRuntime(32743): android.view.InflateException: Binary XML file line #6: Error inflating class fragment
01-28 16:27:21.374: E/AndroidRuntime(32743): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
01-28 16:27:21.374: E/AndroidRuntime(32743): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
01-28 16:27:21.374: E/AndroidRuntime(32743): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
01-28 16:27:21.374: E/AndroidRuntime(32743): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
01-28 16:27:21.374: E/AndroidRuntime(32743): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
01-28 16:27:21.374: E/AndroidRuntime(32743): at android.view.View.inflate(View.java:16119)
01-28 16:27:21.374: E/AndroidRuntime(32743): at mypackage.MyView.<init>(HitsView.java:26)
01-28 16:27:21.374: E/AndroidRuntime(32743): at mypackage.MenuListFragment.onItemClick(MenuListFragment.java:133)
01-28 16:27:21.374: E/AndroidRuntime(32743): at android.widget.AdapterView.performItemClick(AdapterView.java:298)
01-28 16:27:21.374: E/AndroidRuntime(32743): at android.widget.AbsListView.performItemClick(AbsListView.java:1086)
01-28 16:27:21.374: E/AndroidRuntime(32743): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2855)
01-28 16:27:21.374: E/AndroidRuntime(32743): …Run Code Online (Sandbox Code Playgroud) 我正在尝试实施新的Android Google Maps API(v2).然而,它与SlidingMenu似乎并不顺利.如您所知,MapFragment实施基于SurfaceView.问题是SurfaceView它不喜欢移动它 - 我的意思是把它放在可移动的视图中:
ViewPager, ScrollView, ListView,SlidingMenu.移动它时,它会在其像素最初放置的位置留下黑洞.它看起来像这样.
通过在其上指定透明背景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
我正在使用此部分代码MapFragment在Google Map版本2中添加标记.
MarkerOptions op = new MarkerOptions();
op.position(point)
.title(Location_ArrayList.get(j).getCity_name())
.snippet(Location_ArrayList.get(j).getVenue_name())
.draggable(true);
m = map.addMarker(op);
markers.add(m);
Run Code Online (Sandbox Code Playgroud)
我想使用我的drawable中的不同图像.
我有一个UI,它有一个MapFragment,透明视图覆盖在它上面.地图占据整个屏幕,而视图只占屏幕的左三分之一.结果,地图的默认"中心"关闭.当有人点击标记时,我想将该标记居中在MapFragment的整个可见区域(而不是MapFragment本身的中心).
由于这很难用文字描述,让我用几张图片.假设这是我的UI看起来的样子:

当用户点击一个标记时,我想要将它居中并放大以便更接近它.没有任何调整,这是你会得到的:

我想要的是标记居中,但在右边的空间,如下所示:

如果您不使用地图投影更改缩放级别,则很容易实现此专长:
// Offset the target latitude/longitude by preset x/y ints
LatLng target = new LatLng(latitude, longitude);
Projection projection = getMap().getProjection();
Point screenLocation = projection.toScreenLocation(target);
screenLocation.x += offsetX;
screenLocation.y += offsetY;
LatLng offsetTarget = projection.fromScreenLocation(screenLocation);
// Animate to the calculated lat/lng
getMap().animateCamera(CameraUpdateFactory.newLatLng(offsetTarget));
Run Code Online (Sandbox Code Playgroud)
但是,如果您同时更改缩放级别,则上述计算不起作用(因为lat/lng偏移在不同的缩放级别发生变化).
让我来看一下尝试修复的列表:
快速更改缩放级别,进行计算,缩放回原始摄像机位置,然后设置动画.不幸的是,突然的相机改变(即使它只是一瞬间)很遗憾非常明显,我想避免闪烁.
将两个MapFragments叠加在一起,让一个执行计算,而另一个显示.我发现MapFragments并不是真正构建成彼此叠加的(这条路线上有不可避免的错误).
通过缩放级别平方的差异修改屏幕位置的x/y.从理论上讲,它应该可以工作,但它总是相当长一段时间(〜.1纬度/经度,足够远离它).
有没有办法计算offsetTarget即使缩放级别改变?
我试图在我的Android应用程序中实现Google Maps v2,但遗憾的是,我收到了以下消息:

是否可以在Android模拟器(平台4.2)上运行这些地图?
android android-virtual-device android-emulator google-play-services android-maps-v2
android ×10
android-maps-v2 ×10
google-maps ×2
java ×2
android-maps ×1
mapfragment ×1
marker ×1
surfaceview ×1