将查询 GeoPoint 解析为 Google 地图 Android Studio 上的标记

Parse Query GeoPoint to markers on Google Maps Android Studio

我是 android 初学者,到处都找不到答案。

我想在地图上显示距地图中心 25 公里的标记。 我找不到找到地图中心位置的方法,然后显示距离它 25 公里的标记。

地理点位于 Cars.class 中的 Parse.com,第 "location" 行。 到目前为止,事件显示标记的代码不起作用,它得到的结果是:

{"objectId": "[...]","location": {"__type":"GeoPoint","latitude": [...],"longitude": [...] },"createdAt":"[...]","updatedAt": "[...]"}

它崩溃并给我错误:

com.parse.ParseObject cannot be cast to com.company.test.Cars.

感谢您的帮助!

    ParseQuery<Cars> query = ParseQuery.getQuery("Cars");
    query.selectKeys(Collections.singletonList("location"));   
    query.findInBackground(new FindCallback<Cars>(){

        @Override
        public void done(List<Cars> list, ParseException e) {
            if (e != null) {
                return;
            }
            ParseGeoPoint geoPoint;
           for(int i =0;i<list.size();i++){
               geoPoint = list.get(i).getParseGeoPoint("location");
               mMap.addMarker(new MarkerOptions().position(new LatLng(geoPoint.getLatitude(), geoPoint.getLongitude())));

好的,有两种选择可以实现您的目标。

一个有点复杂但是很强大:everything is described here

顺便说一句,应用此选项后,它将是:

ParseQuery<Cars> query = ParseQuery.getQuery(Cars.class);

另一个对我来说听起来不那么复杂:

  1. 创建一个 Parse.Query<Parse.Object> 以获得 Parse.Object 而不是 Cars
  2. done方法中,遍历所有结果
  3. 创建一个以 Parse.Object 作为参数的 Car 的构造函数
  4. 通过您刚刚创建的构造函数将结果中的每个 Parse.Object 转换为汽车对象。

第二个选项可能有点复杂,但更灵活。