我有一个mapview,我想跟踪用户的当前位置.我的手机设置中激活了GPS以及"使用无线网络".然而,由于我在室内,我没有得到GPS定位,因此位置是通过网络确定的; wifi点可用.
我正在运行Google地图应用以及我的应用运行.
奇怪的是,谷歌地图和我的应用程序之间的当前位置不同,谷歌地图非常准确,而在我的应用程序中,位置不知何故离开了几百米.
在我的应用程序中,我基本上执行以下操作(现在用于调试目的):
1)最初在地图上放置一个标记:通过检索到的geopoint locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
2)最初在地图上放置另一个标记:通过检索到的geopoint locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
这会将两个提供者的最后已知位置放在地图上(最终从我的应用程序外部知道).
3)然后定期更新(因为我在这里室内没有获得GPS修复),我这样做:
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, baseLocationListener);
Run Code Online (Sandbox Code Playgroud)
在两种情况下,您都可以看到我传递0参数的频率和距离.
在应用清单中,授予以下权限:
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_MOCK_LOCATION
Run Code Online (Sandbox Code Playgroud)
实际上我的baseLocationListener确实被调用,我在日志中看到了,但更新的位置与上一个已知的当前位置(LocationManager.NETWORK_PROVIDER)相同,相同的纬度/经度.
我想也许我忽略了某些东西或错过了参数或设置,或者我的代码有错误.因此,我在Android市场安装了一些其他(总共3个)LBS应用程序,这些应用程序也显示当前用户的位置.这些应用程序中显示的当前位置等于我的应用程序中的位置 - 它们都是100米关闭 - 但至少完全相同.
请看截图: 截图http://img33.imageshack.us/img33/8679/mapproblem.png
http://img33.imageshack.us/img33/8679/mapproblem.png
现在我想知道:
1)据我所知,getLastKnowLocation是系统范围而不是应用程序范围,为什么Google地图中的位置与所有其他应用程序之间存在差异?
2)Google Maps不会更新提供商的lastKnownLocation吗?
3)Google地图是否使用了除GPS_PROVIDER或NETWORK_PROVIDER之外的其他自定义位置提供商(即由于许可原因),因为它们在SDK中?
4)如何使用像Google Maps这样的NETWORK_PROVIDER实现同样准确的结果呢?
尝试从叠加项目更改标记我注意到setMarker()使项目不可见.这是代码示例.
//Create new marker
Drawable icon = this.getResources().getDrawable(R.drawable.marker);
//Set the new marker to the overlay
overlayItem.setMarker(icon);
Run Code Online (Sandbox Code Playgroud) 编辑:有关详细的操作方法,请查看我的答案.
我现在挣扎了两天,希望有人可以提供帮助.
我正在尝试将最新的ActionBarSherlock(4.0)与MapView一起使用.我知道片段存在问题,但我不需要它们.但我需要Loaders,看来,使用Loaders我也必须扩展FragmentActivity.没问题,我想,我们有来自Pete Doyle 的android-support-v4-googlemaps.正如许多SO线程和Google网上论坛所建议的,我使用android-support-v4-googlemaps JAR(实际上是android-support-v13-r7-googlemaps.jar)而不是android-support-v4.jar来构建ABS.然后我用它作为我项目的库.
现在,我希望以这种方式进行活动:
public class BananoutMapActivity extends SherlockFragmentActivity implements LoaderCallbacks<ArrayList<EventItem>>{
问题:
它编译,但抛出运行时错误: E/AndroidRuntime(29159): java.lang.NoClassDefFoundError: ndl.klimczak.bananout.BananoutMapActivity
我三重检查的事情:
<uses-library android:name="com.google.android.maps" />,我在应用程序标签中有它..BananoutMapActivity在我的清单中宣布过有趣的是:
当我在ICS模拟器上运行它时它会工作(错误出现在2.*模拟器和我的2.3.7设备上),在Honeycomb上,它很可能会工作,这是使用ACL的问题我猜
当我删除implements LoaderCallbacks<ArrayList<EventItem>>它也有效的部分,但这样我就无法使用LoaderManager
为什么在NoClassDefFoundError错误以及如何让我的MapCapableSherlockEnabledFragmentActivity中的加载器工作?
android android-maps actionbarsherlock android-loadermanager
我需要使用Android的MapView 绘制形状,就像使用谷歌地图上的自定义地图创建的形状一样.
换句话说,如果我在地图上绘制一个形状,当我缩小它时它应该缩小,覆盖地图的相同区域,而不管缩放级别如何.
Android参考之后的示例:
@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when)
{
super.draw(canvas, mapView, shadow);
//---translate the GeoPoint to screen pixels---
Point screenPts = new Point();
mapView.getProjection().toPixels(p, screenPts);
Paint boxPaint = new Paint();
boxPaint.setColor(android.graphics.Color.WHITE);
boxPaint.setStyle(Paint.Style.FILL);
boxPaint.setAlpha(140);
canvas.drawCircle(screenPts.x, screenPts.y, 20, boxPaint);
return true;
}
Run Code Online (Sandbox Code Playgroud)
这会在地图上显示一个白色圆圈,但如果缩小,则圆圈大小相同.也许使用帆布是不正确的方法?
我需要谷歌地图如何突出社区或城市:
有任何想法吗?提前致谢!
android google-maps android-maps android-canvas android-mapview
在我的Android应用程序中,我需要将标记放在地图上的确切位置.我用51.507351,-0.127758(伦敦)位置在地图上标记了一个标记.我使用以下代码来完成工作.
googleMap.addMarker(new MarkerOptions().position(
new LatLng(51.507351, -0.127758)).icon(
BitmapDescriptorFactory.fromBitmap(BitmapFactory
.decodeResource(getResources(),
R.drawable.q_icon))));
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
new LatLng(51.507351, -0.127758), 20));
Run Code Online (Sandbox Code Playgroud)
这是我的标记可绘图像:
现在我的问题是,"Q"符号位于51.507351,-0.127758的位置.我需要将标记放在底部箭头开始的位置.
请查看图片,以便了解我的问题.
我怎样才能做到这一点?请帮我.
我有一项任务,要显示在Android地图中显示的458个标记.为避免与性能相关的问题,我使用AsyncTask实例更新了地图上的数据.
这是我做的简短场景.
ItemizedOverlay课堂上添加它们publishProgress方法在地图中放置50个标记.在第50次迭代之后,流程进入onProgressUpdatevia publishProgress,这是我的onProgressUpdate方法代码
// MapOverLays = mapView.getOverlays();
//This line was called in asyc task's constructor
// Hello Overlay is an instance of ItemizedOverlay.
mapOverlays.add(helloOverLay);
//MapView.getController - Also called in Constructor
controller.setZoom(12);
controller.animateTo(centerPoint);
controller.setCenter(centerPoint);
Run Code Online (Sandbox Code Playgroud)
此代码抛出ArrayIndexOutOfBoundException,logcat不显示我的模块中的任何类.如果它解释了我的问题,这是logcat转储.
12-07 11:34:48.644: ERROR/AndroidRuntime(508): java.lang.ArrayIndexOutOfBoundsException
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at com.google.android.maps.ItemizedOverlay.getIndexToDraw(ItemizedOverlay.java:211)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at com.google.android.maps.ItemizedOverlay.draw(ItemizedOverlay.java:240)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at com.google.android.maps.Overlay.draw(Overlay.java:179)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:42)
12-07 11:34:48.644: ERROR/AndroidRuntime(508): at com.google.android.maps.MapView.onDraw(MapView.java:476) …Run Code Online (Sandbox Code Playgroud) 我想在Android中复制Google地图的这个功能:

您可以在地图上看到,圆圈描绘了用户选择的范围.
在我的应用程序中,我还希望拖动器驻留在圆的周边,可以拖动以重新定义半径.
如果有人能告诉我如何在地图上绘制自定义可绘制叠加和2D图形,我可以自己做其他事情.
谢谢!
可以通过此链接访问完整的应用程序
我正在尝试将新MapView的实例放在ListView中.新的mapview是:
com.google.android.gms.maps.MapView
Run Code Online (Sandbox Code Playgroud)
我正在关闭所有交互,并为视图设置固定高度:
GoogleMapOptions options = new GoogleMapOptions();
options.mapType(GoogleMap.MAP_TYPE_NORMAL);
options.compassEnabled(false);
options.rotateGesturesEnabled(false);
options.scrollGesturesEnabled(false);
options.tiltGesturesEnabled(false);
options.zoomControlsEnabled(false);
options.zoomGesturesEnabled(false);
mMapView = new MapView(getActivity(), options);
mMapView.setLayoutParams(new AbsListView.LayoutParams(
AbsListView.LayoutParams.MATCH_PARENT,
200));
mMapView.setEnabled(false);
mMapView.setFocusable(false);
getListView().addHeaderView(mMapView);
getListView().addAdapter(simpleArrayAdapter);
Run Code Online (Sandbox Code Playgroud)
这很有效,但如果我快速滚动列表视图,看起来mapview渲染会稍微滞后,所以你可以在滚动方向看到一小块黑色像素.
这几乎看起来似乎是某种同步问题,因为我猜测使用opengl的mapview足够快以响应我的滚动进行渲染.此外,旧的MapView + MapActivity在相同的设置中也可以正常运行.
下面是快速滚动时出现间隙的图片.经过一段时间后,mapview将赶上并再次渲染.

有什么想法吗?
谢谢
-----更新---------
此问题看起来与以下内容相同:
使用Google Maps API v2的ViewPager:神秘的黑色视图
但是我无法在此设置中记录那里的修复程序.
android google-maps surfaceview android-maps android-maps-v2
我试图在用户单击标记时从自定义infoWindow中的URL加载图像.我能够加载其他细节,但图像没有加载它.我正在使用Picasso库为我这样做.我搜索了许多相关主题并查看了解决方案,但无法理解应用哪种解决方案来解决我的问题.我正在使用Web服务调用来获取所需的数据.
这是我的代码:
@Override
public View getInfoContents(Marker arg0) {
//marker.showInfoWindow();
return null;
}
@Override
public View getInfoWindow(Marker arg0)
{
View v = getLayoutInflater().inflate(R.layout.map_infowindow, null);
for(int i=0 ; i<lstMain.size();i++)
{
Pojo b=lstMain.get(i);
double slat= Double.parseDouble(b.getLatitude());
double slng= Double.parseDouble(b.getLongitude());
double lat= Math.round(slat*100000.0)/100000.0;
double lng= Math.round(slng*100000.0)/100000.0;
String s1=String.valueOf(lat);
String s2=String.valueOf(lng);
Log.v("comparing latilongi pojo===>", lat+" , "+lng);
Log.v("comparing latilongi marker===>", Clickedlatitude+" , "+Clickedlongitude);
if(s1.equals(String.valueOf(Clickedlatitude)) && s2.equals(String.valueOf(Clickedlongitude)))
{
txtDname=(TextView)v.findViewById(R.id.infoDoctorName);
txtDspe=(TextView)v.findViewById(R.id.infoDoctorSpe);
txtDaddress=(TextView)v.findViewById(R.id.infoDoctorAddress);
imgUrl=(ImageView)v.findViewById(R.id.infoDoctorImage);
String url=b.getPhotoURL();
txtDname.setText(b.getDoctorName());
txtDspe.setText(b.getSpecialization());
txtDaddress.setText(b.getAddress1()+" , "+b.getAddress2());
Picasso.with(MapActivity.this)
.load(url)
.placeholder(R.drawable.ic_launcher)
.error(R.drawable.ic_launcher).resize(50, 50)
.into(imgUrl);
} …Run Code Online (Sandbox Code Playgroud) 在我的Android应用程序中,我的地图屏幕在地图上单击标记时显示方向和Google地图.我在我的应用程序中使用以下内容.
XML:
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)
在代码中:
GoogleMap googleMap = ((MapFragment) getFragmentManager().findFragmentById(
R.id.map)).getMap();
Run Code Online (Sandbox Code Playgroud)
我标记了方向,Google地图图标标有蓝色.请看我的地图屏幕的图像.

如何从地图片段隐藏方向和谷歌地图图标?
android google-maps google-maps-markers android-maps google-maps-android-api-2