public BitmapDescriptor createPureTextIcon(String text) {
Paint textPaint = new Paint(); // Adapt to your needs
float textWidth = textPaint.measureText(text);
float textHeight = textPaint.getTextSize();
int width = (int) (textWidth);
int height = (int) (textHeight);
Bitmap image = Bitmap.createBitmap(width, height, Config.ARGB_8888);
Canvas canvas = new Canvas(image);
canvas.translate(0, height);
// For development only:
// Set a background in order to see the
// full size and positioning of the bitmap.
// Remove that for a fully transparent icon.
canvas.drawColor(Color.LTGRAY);
canvas.drawText(text, 0, 0, textPaint);
BitmapDescriptor icon = BitmapDescriptorFactory.fromBitmap(image);
return icon;
}
1条答案
按热度按时间dxpyg8gm1#
无法获得城市名称的精确屏幕坐标,因此您无法在每个城市名称下准确放置温度标签。但您可以从Map中隐藏所有城市/城镇名称(和其他标签
(请查看Add a Styled Map了解更多详细信息),并从this或that等数据库中获取城市坐标和名称,并根据需要显示城市名称和其他文本。
要创建不带城市名称的Map,您可以使用Styled map wizard交互模式(将标签搜索栏向左移动)
然后点击“Finish”按钮,复制粘贴JSON,如下所示:
到项目中的文件中,例如
src\main\res\raw\no_city_names_map_style.json
。然后,您可以通过以下方式将此样式应用到Map:mGoogleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(getApplicationContext(), R.raw.no_city_names_map_style));
要放置文本,您可以使用Markers和只包含文本的自定义动态创建图标,例如this中user2808624的答案:
然后,您可以通过以下方式在Map上放置带有自定义文本的标记: