我制作了一个Android应用程序,显示谷歌地图,并在该地图上我绘制了一个多边形,其LatLng存储在arrayList中..我想找到在谷歌地图上绘制的那个多边形的区域,我试过我最好,但没有成功,我无法使用Spherical util,计算区域功能,因为它给出了错误,请给我最好的帮助,,,
在此先感谢,我在下面提供我的代码,plz建议如何找到多边形的区域,正在绘制...谢谢..
dpackage com.example.mapss;
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMapClickListener;
import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.PolygonOptions;
import com.google.android.gms.maps.model.PolylineOptions;
public class MainActivity extends Activity {
GoogleMap map;
ArrayList<LatLng> arrayPoints =null;
PolylineOptions polylineOptions;
PolygonOptions polygonOptions;
RadioGroup rg_views;
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
arrayPoints = new ArrayList<LatLng>();
map=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
map.getUiSettings().setZoomControlsEnabled(true);
map.getUiSettings().setCompassEnabled(true);
map.getUiSettings().setMyLocationButtonEnabled(true);
map.setMyLocationEnabled(true);
rg_views =(RadioGroup)findViewById(R.id.rg_views);
rg_views.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
if (checkedId==R.id.rb_map){
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
}
else if(checkedId==R.id.rb_satellite){
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
}
else if(checkedId==R.id.rb_terrain){
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
}
}
});
map.setOnMapClickListener(new OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
// TODO Auto-generated method stub
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(point);
markerOptions.title(point.latitude + ": " + point.longitude);
map.clear();
map.animateCamera(CameraUpdateFactory.newLatLng(point));
map.addMarker(markerOptions);
polygonOptions = new PolygonOptions();
polygonOptions.fillColor(Color.RED);
polygonOptions.strokeWidth(5);
arrayPoints.add(point);
polygonOptions.addAll(arrayPoints);
map.addPolygon(polygonOptions);
}
});
map.setOnMapLongClickListener(new OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng point) {
// TODO Auto-generated method stub
map.clear();
arrayPoints.clear();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
答案 0 :(得分:0)
Google Map Api支持库与我合作 https://developers.google.com/maps/documentation/android/utility/
答案 1 :(得分:0)
要使用computeArea方法,您需要导入
com.google.maps.android.SphericalUtil
就我而言,我是手工进口的。 然后你可以打电话
SphericalUtil.computeArea(listOfLatLng)
答案 2 :(得分:0)
你应该使用这个功能
com.google.maps.android.SphericalUtil;
public static double computeArea(java.util.List<LatLng> path)
path
必须是封闭路径。
不要忘记在你的gradle中添加依赖项。
compile 'com.google.maps.android:android-maps-utils:0.5+'
检查此链接是否有更多功能。 http://googlemaps.github.io/android-maps-utils/