标签: android-maps-v2

Android用轴承映射V2 newLatLngBounds

我正在使用这个布局的新Android地图V2:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:map="http://schemas.android.com/apk/res-auto"
  android:id="@+id/map"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  class="com.google.android.gms.maps.SupportMapFragment"
  map:cameraBearing="270"/>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用newLatLngBounds(LatLngBounds bounds,int padding)方法来缩放和查看地图中的所有标记,但摄像机方位设置为0.

谷歌开发者文档中的描述说:

public static CameraUpdate newLatLngBounds(LatLngBounds bounds,int padding)(...).返回的CameraUpdate的轴承为0,倾斜度为0.(...)".

如何更改轴承值?

在调用newLatLngBounds之后,我尝试以编程方式设置新轴承,如下所示:

mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 100));
mMap.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder()
.target(mMap.getCameraPosition().target)
.zoom(mMap.getCameraPosition().zoom)
.bearing(270)
.build()));
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,一些标记将不会显示出来.

android android-maps-v2

18
推荐指数
3
解决办法
1万
查看次数

从Android Google Maps API v2中删除一个圆圈而不清除地图

我正在我的地图上绘制一个圆圈,如下所示:

CircleOptions circle=new CircleOptions();
circle.center(centre);
circle.strokeColor(0xFFFFA420);
circle.strokeWidth(2f);
circle.fillColor(0x11FFA420);
circle.radius(radius);
myMap.addCircle(circle);
Run Code Online (Sandbox Code Playgroud)

要删除此圈子,我正在调用myMap.clear(),这会删除添加到地图中的所有项目.问题是如何删除此圈而不删除地图上的所有其他项目?

geometry android android-maps-v2

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

隐藏android google maps API v2中的标记信息窗口

目前,我可以使用Android Google Maps API v2在Google地图中查看我的所有标记.

在地图中添加我的标记:

mapView.addMarker
     (new MarkerOptions()
      .position(aUsersLocation).
      icon(BitmapDescriptorFactory.fromBitmap(aUserImage))
      .snippet(My_VALUE_1)
      .title(My_VALUE_2)
     .hideInfoWindow();
Run Code Online (Sandbox Code Playgroud)

我有几个标记,并为每个标记的代码段和标题指定了几个值(My_VALUE_1和My_VALUE_2).当用户点击标记时,我需要这些唯一值,我将在onMarkerClick监听器中收到以下值:

        @Override
        public boolean onMarkerClick(Marker theMarker) 
        {
            String aValue1 = theMarker.getSnippet();
            String aValue2 = theMarker.getTitle();
            theMarker.getPosition().latitude...
           ...
            return false;
        }
Run Code Online (Sandbox Code Playgroud)

我的问题是:当我将标题和标题值添加到标记时,当用户单击标记时,会显示infoWindow.

我需要隐藏标记的infoWindow.我尝试使用hideInfoWindow,但似乎无法正常工作.

请给我任何建议.

谢谢.

android google-maps android-maps android-mapview android-maps-v2

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

如何以编程方式更改Google Maps v2(支持片段)的宽度和高度?

如何以编程方式更改com.google.android.gms.maps.SupportMapFragment的宽度和高度?我想你可以将它包装在一个带有match_parent的视图组中,但是如果我没有必要的话,我希望不要嵌套(老实说甚至不确定它是否有效).

 <fragment xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/storefront_map"
                    class="com.google.android.gms.maps.SupportMapFragment"
                    android:layout_width="match_parent"
                    android:layout_height="250dp"
                    />
Run Code Online (Sandbox Code Playgroud)

为了给出上下文,我想在地图点击时将地图从一个高度扩展到另一个高度.

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
    @Override
    public void onMapClick(LatLng latLng) {
       expandMap(); // not sure how to do this programatically.
    }
});
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒!

android android-fragments android-maps-v2

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

谷歌地图Android API v2 SupportMapFragment内存泄漏

使用2个简单的活动.第一个Activity只包含一个按钮来启动第二个包含地图的Activity:

主要活动:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void goToMap(View view){ //This is just the onClick method for the button
    Intent intent=new Intent( this, BigMapTest.class);
    startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

地图活动:

public class BigMapTest extends FragmentActivity {
SupportMapFragment mapFragment;
GoogleMap map;

@Override
protected void onCreate(Bundle arg0) {
    // TODO Auto-generated method stub
    super.onCreate(arg0);

    setContentView(R.layout.travel_diary_big_map);

    mapFragment=(SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.big_map);
    map=mapFragment.getMap();

}
Run Code Online (Sandbox Code Playgroud)

地图活动的XML布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<fragment
        android:id="@+id/big_map"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        class="com.google.android.gms.maps.SupportMapFragment"  
        />
Run Code Online (Sandbox Code Playgroud)

现在当我运行这段代码时,按下按钮移动到带有地图的Activity,然后按回去进入第一个活动...然后重复这个过程,我可以看到每次堆的大小都在增加,直到达到这是限制,然后开始钳制.如果你用地图(即缩放)混乱一点,我可以在这一点上获得一个OOM异常.

01-25 16:10:13.931:D/dalvikvm(21578):GC_FOR_ALLOC释放1898K,7%空闲45859K/49187K,暂停204ms …

android google-maps-android-api-2 supportmapfragment android-maps-v2

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

在片段中使用Google Map v2的推荐方法是什么?

我想在片段内添加自定义布局的地图.

  1. 我可以使用将添加SupportMapFragment的ChildFragmentManager来实现.这种方法目前正在使用.但它有缺点,因为子片段事务是异步的,很难保证getMap不会返回null.
  2. 另一种方法是从super扩展SupportMapFragment存储mapView onCreateView

    mapView = super.onCreateView(inflater, container, savedInstanceState);

    并将其插入到膨胀的布局中.主要问题是,然后片段尝试从保存状态恢复谷歌地图SDK内部粉碎.

有没有其他方法可以解决这个问题.如果谷歌地图团队的某个人会推荐正确的方法会很好,因为你没有在样本中加入这样的东西.

android android-maps android-mapview android-maps-v2

17
推荐指数
1
解决办法
4954
查看次数

如何获取标记文本的单击事件

我在我的应用程序中显示谷歌地图api v2.我在地图上设置了一些标记.我还在单击标记时显示的标记上设置了标题和片段.

现在,我想在点击标记的标题时调用新活动,而不是标记本身.

map.setOnMarkerClickListner
Run Code Online (Sandbox Code Playgroud)

仅在单击标记时调用.

但我不想这样做.我希望标记在点击标记时显示标题和片段,但我想在点击标题时调用新活动.

知道我们怎么做吗?

谢谢

android google-maps android-maps-v2

17
推荐指数
3
解决办法
3万
查看次数

确定点是否在多边形中

根据我的要求,我在谷歌地图上绘制多边形,如下图所示.(使用地图v2) 在此输入图像描述

现在,我需要在用户输入特定多边形时显示警报.

如何识别我的当前位置是否在多边形中.(需要优化的方式,不需要耗尽电池)

提前致谢.

android google-maps geolocation polygons android-maps-v2

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

不推荐使用Android setOnMyLocationChangeListener

Android Google Map的setOnMyLocationChangeListener方法现已弃用.有谁知道如何绕过它?谢谢.

java android google-maps android-maps-v2

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

TileProvider方法getTile - 需要将x和y转换为lat/long

我正在将iOS应用程序移植到Android,并且使用Google Maps Android API v2. 该应用程序需要在地图上绘制热图叠加层.

到目前为止,看起来最好的选择是使用TileOverlay并实现自定义TileProvider.在该方法中getTile,我的方法被赋予x,y和zoom,并且需要以a的形式返回位图Tile.到现在为止还挺好.

我有一组热图项目,我将用它们在位图​​上绘制径向渐变,每个都有一个纬度/经度.我遇到以下两个任务有问题:

  1. 如何确定由x,y和zoom表示的图块是否包含热图项目的纬度/经度?
  2. 如何将热图项目的纬度/经度转换为位图的x/y坐标.

谢谢您的帮助!

UPDATE

感谢MaciejGórski的回答,以及marcin的实现,我能够回答我的问题的前半部分,但我仍然需要第二部分的帮助.为了澄清,我需要一个函数来返回指定纬度/经度的图块的x/y坐标.我试图扭转MaciejGórski的计算和marcin的答案而没有运气.

public static Point fromLatLng(LatLng latlng, int zoom){
    int noTiles = (1 << zoom);
    double longitudeSpan = 360.0 / noTiles;
    double mercator = fromLatitude(latlng.latitude);
    int y = ((int)(mercator / 360 * noTiles)) + 180;
    int x = (int)(latlng.longitude / longitudeSpan) + 180;
    return new Point(x, y);
}
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!

android google-maps google-maps-android-api-2 android-maps-v2

16
推荐指数
3
解决办法
5844
查看次数