[android] 지리적 URI 인 텐트로 시작된지도에 마커를 표시하려면 어떻게하나요?

특정 지리적 좌표로 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와 함께 오버레이 만 사용했습니다. 뷰에 맵이 표시되는 경우 뷰에 이미지를 그리는 것과 같은 방식으로 화면 중앙에 마커를 그릴 수 있습니다.

그러나 마커는 실제지도 좌표에 연결되지 않지만 정적보기 인 경우 연결될 수 있습니다.