특정 지리적 좌표로 Google지도를 시작하여 다른 위치 (한 번에 하나씩, 사용자 입력에 의해 선택됨)를 표시하려는 응용 프로그램이 있습니다.
나는 현재 이것을 사용하고 있습니다 (물론 실제 위도 및 경도 값 포함) :
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?z=17"));
startActivity(intent);
지정된 지점에 대한 표시 기나 마커가 표시되지 않는다는 점을 제외하고는 내가 원하는 것과 정확히 일치합니다. 그것은 그 위치에만 집중됩니다.
MapView를 사용하지 않고 마커 또는 다른 것을 포함하는 방법이 있습니까?
답변
이 시도:
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)"));
startActivity(intent);
레이블을 원하지 않는 경우 (Label + Name)을 생략 할 수 있으며, 가장 가까운 거리 또는 관련성이 있다고 생각되는 다른 항목을 기반으로 무작위로 하나를 선택합니다.
답변
레이블에 앰퍼샌드 (&)가있는 경우를 제외하고 허용되는 대답은 정확합니다.
지리적 위치에 대한 Uniform Resource Identifier ( ‘geo’URI) 살펴보기 :
섹션 5.1은 다음과 같이 설명합니다.
최종 URI가 ‘쿼리’구성 요소를 포함하는 경우 구성 요소 구분 기호 “?”를 추가합니다. 결과의 끝에 인코딩 된 쿼리 문자열이 이어집니다.
불행히도 이렇게하면 우리가 원하는 것이 아닌 ‘=’도 피할 수 있습니다.
이렇게해야합니다.
String label = "Cinnamon & Toast";
String uriBegin = "geo:12,34";
String query = "12,34(" + label + ")";
String encodedQuery = Uri.encode(query);
String uriString = uriBegin + "?q=" + encodedQuery;
Uri uri = Uri.parse(uriString);
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri);
startActivity(intent);
답변
인 텐트를 사용하여 Google지도를 시작하는 더 많은 옵션이 있습니다.
Double myLatitude = 44.433106;
Double myLongitude = 26.103687;
String labelLocation = "Jorgesys @ Bucharest";
1)
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<" + myLatitude + ">,<" + myLongitude + ">?q=<" + myLatitude + ">,<" + myLongitude + ">(" + labelLocation + ")"));
startActivity(intent);
2)
String urlAddress = "http://maps.google.com/maps?q="+ myLatitude +"," + myLongitude +"("+ labelLocation + ")&iwloc=A&hl=es";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlAddress));
startActivity(intent);
삼)
String urlAddress = "http://maps.googleapis.com/maps/api/streetview?size=500x500&location=" + myLatitude + "," + myLongitude + "&fov=90&heading=235&pitch=10&sensor=false";
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlAddress));
startActivity(intent);
답변
이 문자열은 나를 위해 잘 작동합니다.
String geoUriString="geo:"+lat+","+lon+"?q=("+head+")@"+lat+","+lon;
Uri geoUri = Uri.parse(geoUriString);
Log.e(TAG, "String: "+geoUriString);
Intent mapCall = new Intent(Intent.ACTION_VIEW, geoUri);
startActivity(mapCall);
답변
geo : uri에 (LocationMarkerName)을 추가해보십시오. 예 : “geo :,? z = 17 (LocationMarkerName)”
Android의 Google지도에서 23.0980,30.6797 (NamedMarker)을 검색하면지도 중앙에 이름이 NamedMarker 인 마커를 해당 위치에 배치하는 것 같습니다.
답변
@Kenton Price의 다음 스 니펫이 Android 4.4 (KitKat)에서 여전히 작동하는지 확인했습니다.
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:<lat>,<long>?q=<lat>,<long>(Label+Name)"));
startActivity(intent);
답변
지도 위에 마커를 그리기 위해 MapView와 함께 오버레이 만 사용했습니다. 뷰에 맵이 표시되는 경우 뷰에 이미지를 그리는 것과 같은 방식으로 화면 중앙에 마커를 그릴 수 있습니다.
그러나 마커는 실제지도 좌표에 연결되지 않지만 정적보기 인 경우 연결될 수 있습니다.