标签: android-maps

带有mapview的Google地图和应用有不同的当前位置

我有一个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实现同样准确的结果呢?

android google-maps android-maps

8
推荐指数
1
解决办法
7514
查看次数

Android OverlayItem.setMarker():更改一个项目的标记

尝试从叠加项目更改标记我注意到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)

java android android-maps

8
推荐指数
1
解决办法
4079
查看次数

ActionBarSherlock + Maps + Loaders = java.lang.NoClassDefFoundError

编辑:有关详细的操作方法,请查看我的答案.

我现在挣扎了两天,希望有人可以提供帮助.

我正在尝试将最新的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

我三重检查的事情:

  • ActionBarSherlock库项目和我的项目都针对Google API 4.0.3
  • 我有<uses-library android:name="com.google.android.maps" />,我在应用程序标签中有它.
  • 我在项目的构建路径中也有相同的android-support-v13-r7-googlemaps.jar
  • .BananoutMapActivity在我的清单中宣布过

有趣的是:

  • 当我在ICS模拟器上运行它时它会工作(错误出现在2.*模拟器和我的2.3.7设备上),在Honeycomb上,它很可能会工作,这是使用ACL的问题我猜

  • 当我删除implements LoaderCallbacks<ArrayList<EventItem>>它也有效的部分,但这样我就无法使用LoaderManager

为什么在NoClassDefFoundError错误以及如何让我的MapCapableSherlockEnabledFragmentActivity中的加载器工作?

android android-maps actionbarsherlock android-loadermanager

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

在Android MapView中绘制形状,与缩放级别无关

我需要使用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

8
推荐指数
3
解决办法
4749
查看次数

android谷歌地图标记放置

在我的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 android-maps android-maps-v2

8
推荐指数
3
解决办法
9231
查看次数

android maps:数组索引超出绑定异常

我有一项任务,要显示在Android地图中显示的458个标记.为避免与性能相关的问题,我使用AsyncTask实例更新了地图上的数据.

这是我做的简短场景.

  1. 我获取了英国各地458个地点的纬度/经度.
  2. 我运行循环,根据Android博客教程,我在ItemizedOverlay课堂上添加它们
  3. 在每50次迭代后,我调用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-maps android-maps

7
推荐指数
1
解决办法
4071
查看次数

在地图上创建自定义叠加层

我想在Android中复制Google地图的这个功能: 自定义地图叠加

您可以在地图上看到,圆圈描绘了用户选择的范围.

在我的应用程序中,我还希望拖动器驻留在圆的周边,可以拖动以重新定义半径.

如果有人能告诉我如何在地图上绘制自定义可绘制叠加和2D图形,我可以自己做其他事情.

谢谢!

可以通过此链接访问完整的应用程序

android android-sdk-2.1 android-maps

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

在ListView中,新的gms.maps.MapView渲染有点滞后?

我正在尝试将新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

7
推荐指数
1
解决办法
1715
查看次数

图像没有从自定义infoWindow中的URL加载使用Android中的Picasso图像加载库

我试图在用户单击标记时从自定义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 android-maps

7
推荐指数
1
解决办法
3739
查看次数

Android谷歌地图版本-2显示方向和谷歌地图图标

在我的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

7
推荐指数
2
解决办法
5252
查看次数