【问题标题】:Android Google Map coordinateAndroid 谷歌地图坐标
【发布时间】:2015-02-05 07:12:23
【问题描述】:

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

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);

        }
    });

【问题讨论】:

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


    【解决方案1】:

    如果我理解正确,您在地图中设置了标记,当用户单击标记时,您会开始另一个活动。以下代码应该可以工作(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)
    

    返回两个LatLngs 之间的距离(以米为单位)。

    编辑示例:

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

    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
    

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

    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
                }
            }
        }
    });
    

    【讨论】:

    • 很高兴我能帮上忙,别忘了标记正确答案。祝您的应用好运!
    • 哪个坐标? How to add markers
    • 抱歉打扰了,我的意思是我输入一个目的地(坐标),当用户点击该位置时,它会将它们链接到一个页面
    • 哦,我以为你已经将它们硬编码在一个数组中,或者事先以其他方式获取它们。
    • 我不知道你的数据来自哪里或它代表什么,所以我不可能告诉你如何存储它。如果您需要帮助,请打开另一个问题。
    猜你喜欢
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多