Android谷歌地图坐标

时间:2014-12-07 15:37:47

标签: android google-maps android-maps android-maps-extensions

目前正在制作一个包含谷歌地图的简单应用。我想在用户点击设计的坐标时链接到下一个活动,但它不起作用且没有错误,请帮帮我

double latitude = 1.34503109;

    double longitude = 103.94008398;

    LatLng latLng = new LatLng(latitude, longitude);

    gMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
        @Override
        public void onMapClick(LatLng latLng) {
            Intent i = new Intent(Activity_Selecting_Bus.this,
                    Activity_Bus_Selected.class);
            startActivity(i);

        }
    });

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您在地图中设置了标记,当用户点击标记时,您就会启动另一项活动。以下代码应该有效(在SupportMapFragment中):

getMap().setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
  @Override
  public boolean onMarkerClick(Marker marker) {
    // do the thing!
    return true;
  }
});

如果您没有标记并希望收听某个位置,请点击使用此代码:

getMap().setOnMapClickListener(new GoogleMap.OnMapClickListener() {
  @Override
  public void onMapClick(LatLng latLng) {
    // do the thing!
  }
});

在这种情况下,您可能希望在用户点击"足够接近"到某个地方。我使用这个包含方法

的库http://googlemaps.github.io/android-maps-utils/
SphericalUtil.computeDistanceBetween(LatLng from, LatLng to)

以米为单位返回两个LatLng之间的距离。

编辑示例:

首先,您要定义用户必须点击的位置以及特定点击启动的活动:

private static final HashMap<LatLng, Class<? extends Activity>> sTargets = new HashMap();

static {
    sTargets.put(new LatLng(34.0204989,-118.4117325), LosAngelesActivity.class);
    sTargets.put(new LatLng(42.755942,-75.8092041), NewYorkActivity.class);
    sTargets.put(new LatLng(42.352711,-83.099205), DetroitActivity.class);
}

private static final int RANGE_METERS = 200 * 1000; // 200 km range

然后,当用户点击地图时,您计算到每个点的距离。如果适合,则启动活动。

getMap().setOnMapClickListener(new GoogleMap.OnMapClickListener() {
    @Override
    public void onMapClick(LatLng input) {
        for(Map.Entry<LatLng,<? extends Activity>> entry : sTargets.entrySet()) {
            LatLng ll = entry.getKey();
            boolean inRange = SphericalUtil.computeDistanceBetween(input, ll) < RANGE_METERS;
            if (inRange) {
                Class<? extends Activity> cls = entry.getValue();
                Intent i = new Intent(getActivity(), cls);
                getActivity().startActivity(i);
                break; // stop calculating after first result
            }
        }
    }
});
相关问题