如何在Android中使用纬度和经度作为变量?

时间:2014-12-12 05:50:35

标签: android google-maps

我有一个SQLITE3数据库,我将lat和long定义为文本。 我需要使用那些lat,并且长期作为地图中的最终目的地 意图定义为:

      if(locationMap != null){

        Intent  theIntent = new Intent(getApplication(), displayMap.class);

        theIntent.putExtra("_Id",          locationMap.get("_Id")); 
        theIntent.putExtra("locCode",      locationMap.get("locCode")); 
        theIntent.putExtra("locDesc",      locationMap.get("locDesc")); 
        theIntent.putExtra("locLat",       locationMap.get("locLat")); 
        theIntent.putExtra("locLong",      locationMap.get("locLong")); 
        theIntent.putExtra("locTelephone", locationMap.get("locTelephone")); 
        theIntent.putExtra("locComments",  locationMap.get("locComments")); 


        startActivity(theIntent); // display map with coordinates
      }

在下一个活动中,我将恢复On create方法中的值:

  // Parameters 
  String locCode      = i.getStringExtra("locCode");
  String locDesc      = i.getStringExtra("locDesc");
  String locLat       = i.getStringExtra("locLat");
  String locLong      = i.getStringExtra("locLong");
  String locTelephone = i.getStringExtra("locTelephone");
  String locComments  = i.getStringExtra("locComments");

  String Text = "Current location is: " +
  i.getStringExtra("locLat");
  Toast.makeText( getApplicationContext(),Text,
  Toast.LENGTH_SHORT).show();

  System.out.println("locCode: " + locCode);
  System.out.println("LocDesc: " + locDesc);
  System.out.println("LocLat:  " + locLat);
  System.out.println("LocLong: " + locLong);
  System.out.println("LocTelephone: " + locTelephone);
  System.out.println("LocComment: " + locComments);

  getLocation(ORIGIN);
  setContentView(R.layout.map);
  if (mLastSelectedMarker != null && mLastSelectedMarker.isInfoWindowShown()) {
      // Refresh the info window when the info window's content has changed.
      mLastSelectedMarker.showInfoWindow();
  }
  setUpMapIfNeeded();

}

我需要使用locLat和Loclong而不是数字:

public class displayMap extends FragmentActivity implements
OnMarkerClickListener,
OnInfoWindowClickListener {

    public LatLng ORIGIN = new LatLng(34.02143074239393, -117.61349469423294);
    public LatLng DESTINY = new LatLng(34.022365269080886, -117.61271852999926);

    private GoogleMap mMap;
    private Marker mDestiny;
    private Marker mOrigin;
    private Marker mLastSelectedMarker; // keeps track of last selected marker

我已尝试将文字转换为双倍,但我不允许这样做。

我尝试了很多我在堆栈溢出时发现的解决方案,但还没有运气。

我感谢任何帮助

提前致谢。

3 个答案:

答案 0 :(得分:1)

您需要将字符串中的纬度和经度解析为双倍才能在new LatLng();中使用

double latitude = Double.parseDouble(locLat);
double longitude = Double.parseDouble(locLong);

然后,

public LatLng ORIGIN = new LatLng(latitude, longitude);

答案 1 :(得分:0)

你需要把它们变成双重的。正如GPRathour所说。

答案 2 :(得分:0)

在SQL Lite中将Lat Long Text的类型更改为REAL, 插入值时使用此

 values.put(Latitude_Column, ORIGIN.latitude);
 values.put(Longitude__Column,ORIGIN.longitude);

用于检索值

LatLng origin = new LatLng(cursor.getDouble(cursor.getColumnIndex(Latitude_Column)),cursor.getDouble(cursor.getColumnIndex(Longitude__Column)));

无需解析值