2014-05-11 162 views
0

坐标这是我TrackMap.java谷歌地图标记,并在Android的

public class TrackMap extends FragmentActivity implements LocationListener { 

    GoogleMap map; 

    @SuppressLint("NewApi") 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_track_map); 

     boolean lowPowerMoreImportantThanAccurancy = true; 
     LocationRequest request = LocationRequest.create(); 
     request.setPriority(lowPowerMoreImportantThanAccurancy ? 
       LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY: 
       LocationRequest.PRIORITY_HIGH_ACCURACY); 

     map = ((SupportMapFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.map)).getMap(); 

     map.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

     LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

     lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this); 

     // Enabling MyLocation Layer of Google Map 
     map.setMyLocationEnabled(true); 

     Marker marker = map.addMarker(new MarkerOptions() 
       .position(new LatLng(0, 0)).draggable(true) 
       // Set Opacity specified as a float between 0.0 and 1.0, 
       // where 0 is fully transparent and 1 is fully opaque. 
       .alpha(0.7f).flat(true)); 

    } 

    @Override 
    public void onLocationChanged(Location location) { 
     // TODO Auto-generated method stub 

     map.clear(); 

     MarkerOptions mp = new MarkerOptions(); 

     mp.position(new LatLng(location.getLatitude(), location.getLongitude())); 
     mp.title("Current Position"); 

     map.addMarker(mp); 
    } 

    @Override 
    public void onStatusChanged(String provider, int status, Bundle extras) { 
     // TODO Auto-generated method stub 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     // TODO Auto-generated method stub 

    } 


} 

我在这里的问题是我应该怎么做才能让用户添加标记在地图上,我的TrackMap.java能够得到协调和保存在一个变量中。我应该怎么做?

从我在网上搜索,他们只是教与已知的坐标标记。但是现在我想让用户在不知道坐标的情况下添加标记。

+0

如果可以提供一些源代码来添加标记而不知道坐标(此代码发生在用户添加标记之后)会更好。 –

回答

1

如何在用户触摸地图时添加标记?这里是代码:

map.setOnMapClickListener(new OnMapClickListener() { 

    @Override 
    public void onMapClick(LatLng point) { 
      map.addMarker(new MarkerOptions().position(point)); 
      // you can get latitude and longitude also from 'point' 
      // and using Geocoder, the address 
     } 
}); 
+0

现在,一旦我得到了点,我怎样才能将点分成经纬度,以便我可以保存2个变量,然后保存到MySQL? –

+1

我们有'LatLng点'。从那个,我们得到'point.latitude'&'point.longitude' – Nizam

+0

哦,谢谢你的回答,Nizam。 =) –

0

可以有这样几个步骤: -

  1. 给一个按钮,用户标记他/她的当前位置。
  2. 的OnClick该按钮,获取当前位置,并将其保存在您的文件/数据库等
  3. 使用存储的位置添加标记在地图上并通知用户
+0

nono不是当前位置,因为用户可以在任何地方,并且用户想要添加他/她的房屋位置 –

+0

然后您给他一个选项来在地图上添加标记,将其属性设置为可拖动,并让用户拖动标记到他/她想要的位置。现在他完成后,从该位置获取地理坐标并保存。你可以搜索,如何获得一个地方的地理位置的地方,当标记被拖动在Android谷歌地图 –

+0

好吧...我只需要尝试获得坐标,如果得到源代码更好 –

1

可以使用的地理编码那。地理编码是将街道地址或其他位置描述转换为(纬度,经度)坐标的过程。一旦你获得了坐标,你可以在那里添加标记。

+0

我会尝试,我仍然不确定它是否会生效 –

+0

我同意Kat-hat –

+0

如果能够提供给我一些源代码,用户在不知道坐标和地址的情况下添加标记(此代码在用户添加标记后发生)会更好。 –