내 앱이 서버에서 KML 파일을 받고 모든 위치 표시를지도에 표시합니다. 하지만 너무 많은 데이터가 앞뒤로 이동하므로 이제 서버에서 짧은 문자열 (lat, 몇 포인트의 lang) 만 수신하려고합니다. Android에서 KML 파일을 만드는 방법은 무엇입니까?
은? 안드로이드 장치 (이것에 대한 어떤 API에 KML 파일을 만들
1
A
답변
2
. 나는 Simple XML 라이브러리를 사용하고 지금 안드로이드와 함께 잘 작동합니다 어떤 KML 라이브러리있을 것 같지 않습니다 그것이 가능 KML을 파싱하기 위해 노력하고 있습니다.
그러나 단순한 형식으로 데이터를 이미 받고 있기 때문에 직접 Google Maps API를 직접 사용하는 것이 좋습니다. KML을 Google에 전송 한 다음 렌더링 된지도를 다시 가져 오는 것입니다. 여기에서 자습서를 시작하면 도움이됩니다. http://developer.android.com/resources/tutorials/views/hello-mapview.html
1
-1
public class CreateKmlFileActivity extends FragmentActivity {
private GoogleMap googleMap;
private SupportMapFragment supportMapFragment;
private ArrayList<LatLng> latLngArrayList = new ArrayList<>();
private ArrayList<LatLng> latLngArrayListLine = new ArrayList<>();
private Button button, buttonLine;
private XmlSerializer xmlSerializer;
private boolean flag = false;
private Handler handler;
private Runnable runnable;
GPSTracker gpsTracker;
private double lat;
private double lng;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_task3);
init();
listener();
}
private void init() {
button = (Button) findViewById(R.id.btn_find);
buttonLine = (Button) findViewById(R.id.btn_line);
supportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
googleMap = supportMapFragment.getMap();
gpsTracker = new GPSTracker(this);
lat = gpsTracker.latitude;
lng = gpsTracker.longitude;
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
gpsTracker.getLocation();
if (lat != gpsTracker.latitude || lng != gpsTracker.longitude) {
latLngArrayListLine.add(new LatLng(gpsTracker.latitude, gpsTracker.longitude));
lat = gpsTracker.latitude;
lng = gpsTracker.longitude;
}
handler.postDelayed(runnable, 1000 * 60);
}
};
if (!gpsTracker.getIsGPSTrackingEnabled()) {
gpsTracker.showSettingsAlert();
}
//gpsTracker.latitude
}
private void listener() {
googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {
if (!flag)
latLngArrayList.add(latLng);
else
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
}
});
buttonLine.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handler.removeCallbacks(runnable);
flag = false;
try {
FileOutputStream fileOutputStream = openFileOutput("testLine.kml", Context.MODE_PRIVATE);
xmlSerializer = XmlPullParserFactory.newInstance().newSerializer();
xmlSerializer.setOutput(fileOutputStream, "UTF-8");
xmlSerializer.startDocument(null, null);
xmlSerializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
xmlSerializer.startTag(null, "kml");
xmlSerializer.startTag(null, "Document");
xmlSerializer.startTag(null, "name");
xmlSerializer.text("kmlFile");
xmlSerializer.endTag(null, "name");
xmlSerializer.startTag(null, "Style");
xmlSerializer.attribute(null, "id", "transGreenPoly");
xmlSerializer.startTag(null, "LineStyle");
xmlSerializer.startTag(null, "width");
xmlSerializer.text("1");
xmlSerializer.endTag(null, "width");
xmlSerializer.startTag(null, "color");
xmlSerializer.text("7dff0000");
xmlSerializer.endTag(null, "color");
xmlSerializer.startTag(null, "colorMode");
xmlSerializer.text("random");
xmlSerializer.endTag(null, "colorMode");
xmlSerializer.endTag(null, "LineStyle");
xmlSerializer.endTag(null, "Style");
xmlSerializer.startTag(null, "Folder");
xmlSerializer.startTag(null, "name");
xmlSerializer.text("Google Campus");
xmlSerializer.endTag(null, "name");
xmlSerializer.startTag(null, "visibility");
xmlSerializer.text("1");
xmlSerializer.endTag(null, "visibility");
xmlSerializer.startTag(null, "description");
xmlSerializer.text("Your Data");
xmlSerializer.endTag(null, "description");
xmlSerializer.startTag(null, "Placemark");
xmlSerializer.startTag(null, "name");
xmlSerializer.text("Data");
xmlSerializer.endTag(null, "name");
xmlSerializer.startTag(null, "visibility");
xmlSerializer.text("1");
xmlSerializer.endTag(null, "visibility");
xmlSerializer.startTag(null, "styleUrl");
xmlSerializer.text("#transRedPoly");
xmlSerializer.endTag(null, "styleUrl");
xmlSerializer.startTag(null, "LineString");
xmlSerializer.startTag(null, "extrude");
xmlSerializer.text("1");
xmlSerializer.endTag(null, "extrude");
xmlSerializer.startTag(null, "altitudeMode");
xmlSerializer.text("relativeToGround");
xmlSerializer.endTag(null, "altitudeMode");
//xmlSerializer.startTag(null, "outerBoundaryIs");
// xmlSerializer.startTag(null, "LinearRing");
xmlSerializer.startTag(null, "coordinates");
for (int i = 0; i < latLngArrayListLine.size(); i++) {
if (isPointInPolygon(latLngArrayListLine.get(i), latLngArrayList))
xmlSerializer.text(latLngArrayListLine.get(i).longitude + "," + latLngArrayListLine.get(i).latitude + ",17 \n");
}
xmlSerializer.endTag(null, "coordinates");
// xmlSerializer.endTag(null, "LinearRing");
//xmlSerializer.endTag(null, "outerBoundaryIs");
xmlSerializer.endTag(null, "LineString");
xmlSerializer.endTag(null, "Placemark");
xmlSerializer.endTag(null, "Folder");
xmlSerializer.endTag(null, "Document");
xmlSerializer.endTag(null, "kml");
xmlSerializer.endDocument();
xmlSerializer.flush();
fileOutputStream.close();
} catch (IOException | XmlPullParserException e) {
e.printStackTrace();
}
}
});
}
}
+0
설명이없는 코드는 거의 대답이 아닙니다. – m02ph3u5
관련 문제
- 1. Android에서 트리보기를 만드는 방법은 무엇입니까?
- 2. Android API가 KML 파일을 지원합니까?
- 3. android에서 epub 파일을 읽는 방법은 무엇입니까?
- 4. android에서 pdf 파일을 만드는 방법
- 5. kml 파일을 찾고 있습니다
- 6. DDMS로 KML 파일을 실행
- 7. KML 파일을 android mapview에 삽입하는 방법은 무엇인가요?
- 8. Android에서 많은 목록을 만드는 방법은 무엇입니까?
- 9. Android에서 ListPreference 객관식을 만드는 쉬운 방법은 무엇입니까?
- 10. Android에서 로딩 대화 상자를 만드는 방법은 무엇입니까?
- 11. webapp를 통해 Android에서 아이콘을 만드는 방법은 무엇입니까?
- 12. Android에서 HTTP 서버를 만드는 방법은 무엇입니까?
- 13. Android에서 회전식 애니메이션을 만드는 방법은 무엇입니까?
- 14. 여러 열이있는 Android에서 테이블을 만드는 방법은 무엇입니까?
- 15. android에서 캘린더의 모든 기능을 만드는 방법은 무엇입니까?
- 16. Android에서 웹 페이지를 만드는 방법은 무엇입니까?
- 17. android에서 팝업 창을 만드는 방법은 무엇입니까?
- 18. Android에서 숫자 카운터를 만드는 방법은 무엇입니까?
- 19. Android에서 페이지 넘김 효과를 만드는 방법은 무엇입니까?
- 20. Android에서 캔버스를 투명하게 만드는 방법은 무엇입니까?
- 21. Android에서 커브 레이아웃을 만드는 방법은 무엇입니까?
- 22. Android에서 그리드보기의 배경 이미지를 만드는 방법은 무엇입니까?
- 23. Android에서 연락처 용 계정을 만드는 방법은 무엇입니까?
- 24. Java, Android에서 색상 목록을 만드는 방법은 무엇입니까?
- 25. Android 에뮬레이터 제어를 위해 KML 파일을 준비하는 방법은 무엇입니까?
- 26. iphone map applicaion에서 KML 파일을 여는 방법은 무엇입니까?
- 27. 티타늄으로 파일을 만드는 방법은 무엇입니까?
- 28. 노드에 파일을 만드는 방법은 무엇입니까?
- 29. TIFF 파일을 만드는 방법은 무엇입니까?
- 30. TIFF 파일을 만드는 방법은 무엇입니까?
KML 여러 위치 표시를 표시하는 가장 간단한 방법을 통해 의도이다 우리당가 uri1 = Uri.parse ("지역 : Q = 0,0 HTTP :/urlOfKML"); final 인 텐트 mapIntent = 새로운 인 텐트 (Intent.ACTION_VIEW, uri1); startActivity (mapIntent); 그래서 기기에서 KML을 만들어야합니다. – DixieFlatline
내 대답을 더 자세히 업데이트합니다. IMHO, KML을 만드는 대신 직접지도 API를 사용하는 것이 좋습니다. – elevine
맞습니다.받은 좌표에서 오버레이 항목을 만들어 맵에 놓아야합니다. – DixieFlatline