如何将纬度和经度从数据库传递到Google Maps Activity

时间:2017-04-28 13:06:17

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

我已经建立了一个数据库,通过textview显示特定建筑的纬度和经度。底部有一个“go”按钮,可以加载我的mapsActivity。但是,我似乎无法将lat和long放在地图上。

地图活动

public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {

    GoogleMap mGoogleMap;
    SupportMapFragment mapFrag;
    LocationRequest mLocationRequest;
    GoogleApiClient mGoogleApiClient;
    Location mLastLocation;
    Marker mCurrLocationMarker, map1, map2, map3, map4, map5, map6, map7;
    ZoomControls zoom;
   // public static String TAG1;
   // public static String TAG2;
   public static String TAG_LAT = "lat";
    public static String TAG_LNG = "lng";

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

        ToggleButton b1 = (ToggleButton) findViewById(R.id.button3);

        getSupportActionBar().setTitle("Queen's Building Search");

        Intent intent = getIntent();








        mapFrag = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFrag.getMapAsync(this);

        zoom = (ZoomControls) findViewById(R.id.zcZoom);
        zoom.setOnZoomOutClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mGoogleMap.animateCamera(CameraUpdateFactory.zoomOut());

            }
        });
        zoom.setOnZoomInClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mGoogleMap.animateCamera(CameraUpdateFactory.zoomIn());

            }
        });



      Bundle extras = getIntent().getExtras();
        if(extras != null){
            double value = extras.getDouble("Latitude");
            double value1 = extras.getDouble("Longitude");
           //  TAG_LAT = extras.getString("Latitude");
           // TAG_LNG = extras.getString("Longitude");
           goToLocation(value, value1);


        }

转到位置调用方法

public void goToLocation(double lat, double lng) {
        LatLng ll = new LatLng(lat, lng);
        CameraUpdate update = CameraUpdateFactory.newLatLng(ll);
        mGoogleMap.moveCamera(update);
       // btnGo();



    }

建筑活动

btnGoLocation.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            Double lat = selectedBuilding.getLatitude();
            Double lng = selectedBuilding.getLongitude();


            Bundle bundle = new Bundle();
           // Intent intent = new Intent(BuildingActivity.this, MapsActivity.class);
            //Bundle extras = getIntent().getExtras();

            Intent intent = new Intent(BuildingActivity.this, MapsActivity.class);
            bundle.putDouble(MapsActivity.TAG_LNG,lat);
            bundle.putDouble(MapsActivity.TAG_LNG, lng);


          //  Intent intent = new Intent(getApplicationContext(), MapsActivity.class);
          //  intent.putExtra("Latitude", +lat);
          //  intent.putExtra("Longitude", ""+lng);






           // intent.putExtra("latitude", lat);
           // intent.putExtra("longitude", lng);

           intent.putExtras(bundle);
            startActivity(intent);



            // Double latt=extras.getDouble(lat);
            //Double loNg=extras.getDouble(lng)
        }
    });

正如你所看到的,我的代码非常混乱,试图让它发挥作用。如果有人能与我合作,那么展示我想要做的事情要容易得多。我觉得我很亲密。

2 个答案:

答案 0 :(得分:1)

您是否尝试过MapActivity:

intent.getDoubleExtra("Latitude", 0);

编辑:顺便说一下,它不是一个数据库......只是意图在两个活动之间。这里没有坚持。

答案 1 :(得分:0)

BuildingActivity

中使用此功能
Intent intent = new Intent(getApplicationContext(), MapsActivity.class);
                intent.putExtra("Latitude", ""+lat);
                intent.putExtra("Longitude", ""+lng);

MapsActivity中使用这种方式在onCreate()回调中获取此值...

Intent intent = getIntent();

如果您的额外数据表示为字符串,则可以使用intent.getStringExtra(String name)方法。在你的情况下:

String lat = intent.getStringExtra("Latitude");
String lng = intent.getStringExtra("Longitude");

现在,MapsActivity中有lat和lng值。

希望这会对你有所帮助:)。