23

我有一个标记,当我打开地图时,它显示标记。当我点击它时,它会显示标题和一个工具栏,其中包含地图右下角的两个按钮,让我可以启动意图导航到标记或在Google地图中显示它。我希望在地图打开时自动显示这些内容,而不是让用户点击标记。自动显示谷歌地图标记的工具栏

像这样:-) ... enter image description here 我似乎无法解决如何做到这一点。

我曾尝试:

// create marker 
MarkerOptions marker = new MarkerOptions().position(
     new LatLng(latitude, longitude)).title("title"); 

// adding marker 
googleMap.addMarker(marker).showInfoWindow(); 
googleMap.getUiSettings().setMapToolbarEnabled(true); 

但这只是显示标记的标题和右上角的按钮转到我的位置不是两个工具栏按钮的意图在右下角。

像这种:-(... enter image description here 我有点卡住任何想法

+0

你有没有发现任何方案? – Bunny

回答

5

引述商务部:

在精简版模式的地图,工具栏仍然存在独立的用户的 操作。在一个完全互动式地图,工具栏上的幻灯片时, 用户点击一个标记,并滑出时再标记不再是焦点 中。

因为它是一个交互式地图,所以看起来像没有办法坚持工具栏。您可能需要使用精简版模式的尝试,如果这是一个要求: https://developers.google.com/maps/documentation/android/lite

也期待你的代码:

// create marker 
MarkerOptions marker = new MarkerOptions().position(
     new LatLng(latitude, longitude)).title("title"); 

// adding marker 
googleMap.addMarker(marker).showInfoWindow(); 
googleMap.getUiSettings().setMapToolbarEnabled(true); 

最后一行:googleMap.getUiSettings().setMapToolbarEnabled(true);是多余的,除非你明确地将其设置为false预先。该文档指出:

设置是否启用地图工具栏或禁用 的首选项。如果启用,用户会看到一个条形图,其中包含各种不同的上下文相关操作,包括“在Google地图 应用中打开此地图”和“在Google地图 应用中查找突出显示的标记的路线”。

默认情况下,地图工具栏已启用。

链接:https://developer.android.com/reference/com/google/android/gms/maps/UiSettings.html#setMapToolbarEnabled(boolean)

希望这有助于。

12

单击标记时出现的叠加层会隐式创建并现场销毁。你不能手动显示(还)。

如果必须使用此功能,您可以创建在你的地图覆盖2 ImageViews,并调用相应的意图他们点击后:

// Directions 
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(
     "http://maps.google.com/maps?saddr=51.5, 0.125&daddr=51.5, 0.15")); 
startActivity(intent); 
// Default google map 
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(
     "http://maps.google.com/maps?q=loc:51.5, 0.125")); 
startActivity(intent); 

注意:您需要更改基于坐标标记的getPosition()和用户的位置。

现在要隐藏默认覆盖图,您只需在OnMarkerClickListener中返回true即可。虽然您将无法显示InfoWindows和中央相机上的标记的能力,你可以模仿,根本不够:

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() { 
    @Override 
    public boolean onMarkerClick(Marker marker) { 
     marker.showInfoWindow(); 
     mMap.animateCamera(CameraUpdateFactory.newLatLng(marker.getPosition())); 
     return true; 
    } 
}); 
1

显示DialogFragment而不是信息窗口,并在其中处理一切。

@Override 
public boolean onMarkerClick(Marker marker) { 
    FragmentManager fm = getSupportFragmentManager(); 
    DialogFragment markerWebView = DialogFragment(); 
    mMap.animateCamera(CameraUpdateFactory.newLatLng(marker.getPosition())); 
    markerWebView.show(fm, "fragment_marker"); 
    return true; 
} 

OR

用记号笔点击即可开启/关闭的覆盖使用facsimile of a Google map button

mMap.setOnMarkerClickListener(this); 
mMap.setOnInfoWindowClickListener(this); 


@Override 
public boolean onMarkerClick(Marker marker) { 
    //here turn on the overlays for nav turns etc. for this marker. 
    return false 
} 

@Override 
public void onInfoWindowClick(Marker marker) { 
    //here turn off the overlays for nav turns etc. 
    marker.hideInfoWindow(); 
} 
1

如果我没有记错的话,你想显示相关的两个按钮如果我是真的,那么你只需要tu实现一个像下面的代码一样的新方法,只需在创建时调用这个方法,并确保在你的标记点击监听器

@Override 
public void markerIntentButtonShow(Marker marker) { 
     //setvisible(true) to your side buttons or call some Intent 
     Intent i = new Intent(getActivity(), MarkerViewDetails.class); 
     i.putExtra("marker_snippet", marker.getSnippet()); 
     startActivity(i); 
} 

并调用该方法在点击监听

 googleMap 
       .setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 

        @Override 
        public void onInfoWindowClick(Marker marker) { 

          markerIntentButtonShow(marker); 
        } 
       }); 

,并在您onCreateView

MarkerOptions marker = new MarkerOptions().position(
     new LatLng(latitude, longitude)).title("title"); 
googleMap.addMarker(marker).showInfoWindow(); 
markerIntentButtonShow(marker); 
2

我有一个类似的问题.....如果你没有让用户在地图上浏览,只关注你的标记,y您可以同时使用lite-mode地图....从文档

报价在lite-mode地图,工具栏独立于用户的行为的存在。在完全互动的地图中,当用户点击标记并在标记不再聚焦时再次滑出工具栏时,工具栏会滑入。

docs

此外,通过当用户点击地图默认

同样,API启动谷歌地图移动应用。您可以使用GoogleMap.setOnMapClickListener()来覆盖此设置您自己的侦听器。您还可以通过在包含MapView或MapFragment的视图上调用setClickable()来单击地图上的事件disable

1

对于已用红色标出的工具栏,你可以使用setMapToolbarEnabled() method in UISettings

从文档禁用它:

设置偏好是否地图工具应该启用 禁用。如果启用,用户会看到一个条形图,其中包含各种不同的上下文相关操作,包括“在Google地图 应用中打开此地图”和“在Google地图 应用中查找突出显示的标记的路线”。

代码示例禁用两个按钮:

//Disable Map Toolbar: 
mMap.getUiSettings().setMapToolbarEnabled(false); 

以防万一,你也想知道的变焦按钮,你可以像这样禁用它们:

mMap.getUiSettings().setZoomControlsEnabled(false);