2017-12-14 18 views
0

「Request」という解析オブジェクトにGeoPointが保存されていますが、GeoPointを取得してLatLngオブジェクトに渡す方法がわかりません。私はドキュメンテーションを見てきましたが、この例では私を助けませんでした。この問題は、findオブジェクトのリストからgeoPointを取得できるfindInBackGround()では、onMapメソッドのgeoPointにアクセスできないようです。私は多分、私はここで何かが欠けてるしばらくこれで苦労してきた私はこれを達成しようとしているクラスです。Android ParseGeoPointを使用してマップマーカーを作成する方法

import android.content.Intent; 
import android.location.Location; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.util.Log; 
import android.widget.Toast; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 
import com.parse.FindCallback; 
import com.parse.Parse; 
import com.parse.ParseException; 
import com.parse.ParseGeoPoint; 
import com.parse.ParseObject; 
import com.parse.ParseQuery; 
import com.parse.ParseUser; 

import java.util.List; 

public class ViewMapsActivity extends FragmentActivity implements OnMapReadyCallback { 

    private GoogleMap mMap; 
    LatLng businessLocation; 
    ParseQuery request; 
    ParseGeoPoint geoPoint; 



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




     // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 


     request = ParseQuery.getQuery("Request"); 
     request.whereEqualTo("businessName", ParseUser.getCurrentUser().getUsername()); 
     request.findInBackground(new FindCallback<ParseObject>() { 
      @Override 
      public void done(List<ParseObject> objects, ParseException e) { 

       if (e == null) { 
        if (objects.size() > 0) { 

         geoPoint = objects.get(0).getParseGeoPoint("GeoPoint"); 

         } else { 
          Log.i("Map", "Map not displayed!"); 
         } 
        } 

       } 

      } 
     }); 
     if (businessLocation != null) { 

          businessLocation = new LatLng(-34, 20); 
          mMap.addMarker(new MarkerOptions().position(businessLocation).title("Your Location")); 
          mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(businessLocation, 15)); 

     } 
    } 

答えて

0

私はそれを把握することができた、私は問題を引き起こしていたか知っているが、(businessLocation!= null)の場合は削除していないが緯度経度を埋めることができました。

@Override 
    public void onMapReady(final GoogleMap googleMap) { 
     mMap = googleMap; 


     ParseQuery<ParseObject> query = ParseQuery.getQuery("Request"); 
     query.whereEqualTo("businessName", ParseUser.getCurrentUser().getUsername()); 
     query.findInBackground(new FindCallback<ParseObject>() { 
      @Override 
      public void done(List<ParseObject> objects, ParseException e) { 
       if (e == null) { 
        if (objects.size() > 0) { 

           geoPoint = objects.get(0).getParseGeoPoint("GeoPoint"); 

             businessLocation = new LatLng(geoPoint.getLatitude(), geoPoint.getLongitude()); 

             //mMap.clear(); 
             mMap.addMarker(new MarkerOptions().position(businessLocation).title("Your Location!")); 
             mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(businessLocation, 9)); 

           } else { 
            Toast.makeText(ViewMapsActivity.this, "No objects found.", Toast.LENGTH_SHORT).show(); 
           } 

        } 
       } 

     }); 



    } 
0

私は、これが機能しない理由を知らないが、私はあなたがこれを試してみてください願っています

ParseQuery<ParseObject> request= ParseQuery.getQuery("Request"); 
request.whereEqualTo("businessName", ParseUser.getCurrentUser().getUsername()); 
request.findInBackground(new FindCallback<ParseObject>() { 
      @Override 
      public void done(List<ParseObject> objects, ParseException e) { 

       if (e == null) { 
        if (objects.size() > 0) { 

         for (ParseObject obj: objects) { 
          geoPoint = obj.getParseGeoPoint("GeoPoint"); 
         } 
        } 
+0

ありがとうございますが、geoPoint = obj.getParseGeoPoint( "GeoPoint")ではありませんか? – jsonknightlee

+0

はいあなたは右です –

+0

voidを返すfindinbackground()の内部にあるため、動作しません。 geoPoint、または緯度と経度をバックグラウンドで見つけることなく、あるいはfindInBackground()のスコープの外で使用することなく、どのように取得しますか?それは簡単でなければなりません。 – jsonknightlee

関連する問題