Programming

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

procodes 2020. 8. 10. 08:22
반응형

지리적 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);

(LocationMarkerName)을 geo : uri에 추가해보십시오. 예 : "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와 함께 오버레이 만 사용했습니다. 뷰에 맵이 표시되는 경우 뷰에 이미지를 그리는 것과 같은 방식으로 화면 중앙에 마커를 그릴 수 있습니다.

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

참고 URL : https://stackoverflow.com/questions/3990110/how-do-i-show-a-marker-in-maps-launched-by-geo-uri-intent

반응형