在Google地图V2中更改标记颜色

4
我可以帮您进行翻译。以下是关于改变标记的颜色的内容翻译:

我正在尝试更改标记的颜色。

我的代码如下:

private void addMarker(GoogleMap map, double lat, double lon,
                         int title, int snippet) {
    map.addMarker(new MarkerOptions().position(new LatLng(lat, lon))
                                     .title(getString(title))
                                     .snippet(getString(snippet)));

然后添加一个标记:

addMarker(map, 40.748963847316034, -73.96807193756104,
                R.string.title, R.string.snippet);

我想改变标记的颜色,认为这很容易,只需要像这样实现它:
private void addMarker(GoogleMap map, double lat, double lon,
                         int title, int snippet, int icon) {
    map.addMarker(new MarkerOptions().position(new LatLng(lat, lon))
                                     .title(getString(title))
                                     .snippet(getString(snippet))
                                         .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.(getString(icon)));

并且:

addMarker(map, 40.748963847316034, -73.96807193756104,
                R.string.title, R.string.snippet, HUE_AZURE);

但是显然我不能同时使用"getString"和".icon"。

我该怎么做呢?

此外,这种改变颜色的方法是否支持API 8+? 我在支持API 8+方面遇到了很多问题,如果这个方法破坏了什么东西,那就太糟糕了...

2个回答

5

这里有一个循环,在地图上设置不同颜色的标记,它对我非常有效:

for (Task tempTask : TasksListAppObj.getInstance().tasksRepository.getTasksRepository())
                {
                    LatLng latlng = new LatLng(tempTask.getLatitude(), tempTask.getLongtitude());
                    if (tempTask.getStatus().contentEquals(TasksListActivity.STATUS_WAITING))
                    {
                        newmarker = map.addMarker(new MarkerOptions().position(latlng).title(tempTask.getTitle()).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_for_map_blue)));
                    }
                    else if (tempTask.getStatus().contentEquals(TasksListActivity.STATUS_IN_PROGRESS))
                    {
                        newmarker = map.addMarker(new MarkerOptions().position(latlng).title(tempTask.getTitle()).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_for_map_bordo)));
                    }
                    else if (tempTask.getStatus().contentEquals(TasksListActivity.STATUS_ON_THE_WAY))
                    {
                        newmarker = map.addMarker(new MarkerOptions().position(latlng).title(tempTask.getTitle()).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_for_map_turkiz)));
                    }
                    else if (tempTask.getStatus().contentEquals(TasksListActivity.STATUS_COMPLETE))
                    {
                        newmarker = map.addMarker(new MarkerOptions().position(latlng).title(tempTask.getTitle()).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_for_map_orange)));
                    }
                    else if (tempTask.getStatus().contentEquals(TasksListActivity.STATUS_FAILED))
                    {
                        newmarker = map.addMarker(new MarkerOptions().position(latlng).title(tempTask.getTitle()).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_for_map_purpul)));
                    }
}

希望这能对您有所帮助。

if语句用于更改标记图标。


我需要一种方法,使得图标能够像我的代码中的位置/标题/片段一样使用getString。 - Edalol
抱歉我回复得比较慢,但是我该如何在我的当前代码中实现这个呢? 对于标题和摘要,我使用.title(getString(title))。那么对于.icon,我应该使用什么? - Edalol
如果“int icon”是您的图标资源ID,则应执行以下操作:BitmapDescriptorFactory.fromResource(icon) - Emil Adz
好的,.icon(BitmapDescriptorFactory.fromResource(icon)) 看起来是有效的,但现在我应该在 "addMarker" 中放什么?对于标题和片段,我写 R.string.title/snippet,如果我想要 HUE_AZURE 怎么办?顺便问一下,非常感谢您的帮助 :) - Edalol
HUE_AZURE只是我使用的颜色名称,我没有添加它。通常我会使用.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)),但这在我的代码中不起作用。 - Edalol
显示剩余5条评论

5
以下代码片段适用于我,无需依赖其他工具:
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE);

myMap.addMarker(new MarkerOptions()
    .position(point)
    .icon(bitmapDescriptor)
    .title(point.toString()));

在这里找到了它:http://android-er.blogspot.de/2013/01/change-marker-color-of-googlemaps-v2.html

(说明:此为原文,无需翻译)

谢谢,这对于那些懒惰并想使用默认标记的人来说非常完美,只需调用marker.setIcon(bitmapDescriptor)更改颜色即可:D - nobjta_9x_tq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接