标签: google-maps-android-api-2

用户之后的地图视图 - 适用于Android Maps API v2的MyLocationOverlay类型功能

我切换到Android版地图的v2,我正在尝试移植以下功能:

使用MyLocationOverlay,我可以显示设备的当前位置(蓝点).当用户的位置发生变化并且点到达可见区域的边缘时,地图会动画显示,以便点实时地成为视图的中心.

在v2中,我使用了SupportMapFragment和getMap().setMyLocationEnabled(true).当前位置显示为蓝点(箭头),但是当设备更改位置时,地图视图不会移动,并且点最终会离开视图.

有任何想法吗?

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

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

Android Maps API v2绘制圆圈

使用以下代码绘制圆圈(取自Google Play服务"地图"示例):

    PolylineOptions options = new PolylineOptions();
    int radius = 5; //What is that?
    int numPoints = 100;
    double phase = 2 * Math.PI / numPoints;
    for (int i = 0; i <= numPoints; i++) {
        options.add(new LatLng(SYDNEY.latitude + radius * Math.sin(i * phase),
                SYDNEY.longitude + radius * Math.cos(i * phase)));
    }
    int color = Color.RED;
    mMap.addPolyline(options
            .color(color)
            .width(2));
Run Code Online (Sandbox Code Playgroud)

这是在世界不同地区得出的:

悉尼 斯堪

如你所见圆圈不是真正的圆圈,甚至第二个圆圈基本上都是椭圆形.

我想圈子的"抗锯齿"取决于int numPoints变量中的点数.

  1. int radius = 5示例代码中的变量是什么?我是说它的衡量标准是什么?
  2. 并且主要问题是什么是以为单位绘制给定半径的漂亮圆的正确方法?与api v1中的内容相似的东西canvas.drawCircle()

更新--------------------

改进数学后我可以画出"正确"的圆圈:

private void addCircle(LatLng …
Run Code Online (Sandbox Code Playgroud)

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

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

限制滚动和缩放Google Maps Android API v2

我添加了GroundOverlay来映射,并希望限制此区域内的滚动和缩放.

如何在Android谷歌地图的某些范围内限制滚动?

是否可以立即从MapFragment获取运动点?

请帮我.

android google-maps-android-api-2

16
推荐指数
4
解决办法
2万
查看次数

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
查看次数

第二次点击标记时隐藏infoWindow(Google Map Android API V2)

为了实现这一点,我觉得我只需要覆盖onMarkerClick并检查点击标记的infoWindow是否已经打开,但令我惊讶的是clickedMarker.isInfoWindowShown()总是返回false ...

我的代码:

@Override
public boolean onMarkerClick(final Marker clickedMarker) {
    if(clickedMarker.isInfoWindowShown()) {
        clickedMarker.hideInfoWindow();
        System.out.println("was showing");
    } else {
        clickedMarker.showInfoWindow();
        System.out.println("not showing");
    }
}
Run Code Online (Sandbox Code Playgroud)

它总是告诉我infoWindow"没有显示"这是不对的......我可以通过保留参考来解决这个问题,userLastClickedMarker但我想知道上面我做错了什么.

谢谢!

编辑:

我更改了代码以调试此问题:

    System.out.println(clickedMarker.isInfoWindowShown());
    if(clickedMarker.isInfoWindowShown()) {
        clickedMarker.hideInfoWindow();
        System.out.println(" showing");
    } else {
        clickedMarker.showInfoWindow();
        System.out.println("not showing");
    }
    System.out.println(clickedMarker.isInfoWindowShown());
Run Code Online (Sandbox Code Playgroud)

我发现isInfoWindowShown()在onMarkerClick方法中可以正常工作但不会正确"记住"它.而且我发现有人已经指出这是一个错误......

https://code.google.com/p/gmaps-api-issues/issues/detail?id=5408

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

16
推荐指数
1
解决办法
7474
查看次数

为Google Map v2 Fragment创建OnDragListener

我正在尝试为谷歌地图片段设置onDrag Listener,但无法触发拖动事件.由于地图不直接支持拖动事件,我正在尝试为View实现拖动侦听器.我知道onMarkerDrag事件,但这对我没有好处,因为我不想移动标记.

捕获地图拖动事件的原因有两个:

首先检测用户是否已平移地图.如果他们没有,我喜欢将他们的位置保留在屏幕上,如果它不在地图上,则动画显示他们的位置.如果他们已经平移了地图,我会假设他们知道他们想要看到什么并强制在屏幕上显示位置.(这似乎应该包含在API中)

陷印的第二个原因是允许用户在地图上绘制线条和多边形.我可以使用onTap事件(添加点)来做到这一点,但我也希望能够让它们自由地使用它.

我的代码看起来像这样:

主要活动:

    mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    setUpMapIfNeeded();
    mMapView = findViewById(R.id.map);
    myMapDragListener = new MapDragListener();
    mMapView.setOnDragListener(myMapDragListener);
Run Code Online (Sandbox Code Playgroud)

听众:

public class MapDragListener implements OnDragListener {
    /**
     * 
     */
    public MapDragListener() {
        super();
        say.logCat("MapDragListener: I'm ALIVE!!!!");
    }

    private AkamaiAnnounce say = new AkamaiAnnounce();
    private boolean inDrag;
    private boolean hasPanned=false;

    @Override
    public boolean onDrag(View v, DragEvent event) {
        say.logCat("MapDragListener.onDrag: " + event.toString());
        //String dotTAG = (String) getTag();
        if (event.getLocalState() != this) {
          return false;
        }
        boolean myResult = true;
        int …
Run Code Online (Sandbox Code Playgroud)

android google-maps drag google-maps-android-api-2

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

如何在Android谷歌地图中显示ATM,医院等附近的地方?

如何在Android谷歌地图中显示附近的地方和地方详细信息,如ATM,医院,餐馆等

这是我使用的链接:

使用Google地方信息和地图API显示附近的地点和地点详情

我可以获取当前位置,但附近的地方没有显示.我也没有收到任何错误logcat

android google-maps google-places-api google-maps-android-api-2

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

如何在Fragment中获取Google Maps对象

我在我的应用程序中使用片段,我是新手.有一个片段,我想要显示谷歌地图,并希望得到它的对象,为此,我有一个XML片段,我想在片段本身膨胀它.当我试图给地图视图充气时,它会向我显示getSupportFragmentManager()的错误.

如何获取地图对象然后这是主要问题.我的XML是这样的: -

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

而我想要获取谷歌地图对象的片段是这样的: -

public class FindMyCar extends Fragment {

    private TextView mTvFind;
    private TextView mTvPark;
    private EditText mEtParkHint;

    private GoogleMap map;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.findmycar, null);

        initViews(view);

        Typeface type = Typeface.createFromAsset(getActivity().getResources().getAssets(),"Multicolore.otf"); 
        mTvFind.setTypeface(type);
        mTvPark.setTypeface(type);
        mEtParkHint.setTypeface(type);

        SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);


        return view;
    }


    @Override
    public void onDestroyView() {
        super.onDestroyView();
    }


    @Override
    public void onDestroy() { …
Run Code Online (Sandbox Code Playgroud)

android google-maps fragment android-fragments google-maps-android-api-2

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

Google地图移动版SDK不再免费吗?

根据这个链接:

谷歌价格指南

谷歌从6月11日起改变了它的价格.这是否意味着使用谷歌地图SDK的移动设备不再是免费的?

google-maps google-maps-android-api-2 google-maps-sdk-ios

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

流量数据显示在Android Google Maps API v2中的绘制形状(折线)上方

我正在使用折线绘制路线,并且在路线上方显示交通数据,因此路线被交通线部分隐藏.

更新 我在gmap-api-issues上创建了问题并在那里附加了示例源代码(您只需要将Google Maps API密钥添加到AndroidManifest.xml).请"明星"这些问题以吸引谷歌开发者的注意力.

android google-maps z-index google-maps-android-api-2

15
推荐指数
1
解决办法
1620
查看次数