【问题标题】:How can I add an element on a maps based app with google maps api?如何使用 google maps api 在基于地图的应用程序上添加元素?
【发布时间】:2016-11-20 21:19:26
【问题描述】:

我正在开发一个基于地图的应用,用户拥有通用的 Google 地图界面,但我想在事件中添加 3d 自定义元素。用户只需按下按钮即可在地图上添加 pokestop(例如我的元素)。

我正在使用 Google Maps API,但我不知道是否应该使用图形引擎。实际上,我不想使用 Unity 或其他引擎;我想让应用程序尽可能轻巧。

该应用程序应在 android 上运行。 您有什么建议吗?

【问题讨论】:

标签: java android google-maps unity3d 3d


【解决方案1】:

要使用图像创建标记,请使用它。 // 使用自定义图标。

mSydney = mMap.addMarker(new MarkerOptions()

.position(DELHI)

.title("Delhi")

.snippet("Population: 86,398,800")

.icon(BitmapDescriptorFactory.fromResource(R.drawable.image)));

要使用画布,

Bitmap.Config conf = Bitmap.Config.ARGB_8888;

位图 bmp = Bitmap.createBitmap(80, 80, conf);

画布canvas1 = new Canvas(bmp);

//paint 定义文字颜色、描边宽度和大小

油漆颜色 = new Paint();

color.setTextSize(35);

color.setColor(Color.BLACK);

//修改画布

canvas1.drawBitmap(BitmapFactory.decodeResource(getResources(),

R.drawable.user_picture_image), 0,0, color);

canvas1.drawText("用户名!", 30, 40, color);

//向地图添加标记

mMap.addMarker(new MarkerOptions().position(USER_POSITION)

.icon(BitmapDescriptorFactory.fromBitmap(bmp))

// Specifies the anchor to be at a particular point in the marker image.

.anchor(0.5f, 1));

使用它你可以画出更高级的东西。

在 Google Maps API v2 Demo 中有一个 MarkerDemoActivity 类,您可以在其中 可以查看如何将自定义图像设置为 GoogleMap。

// 使用自定义图标。

mSydney = mMap.addMarker(new MarkerOptions()

.position(SYDNEY)

.title("Sydney")

.snippet("Population: 4,627,300")

.icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));

因为这只是将标记替换为您可能想要使用 Canvas 的图像 画出更复杂、更花哨的东西:

Bitmap.Config conf = Bitmap.Config.ARGB_8888;

位图 bmp = Bitmap.createBitmap(80, 80, conf);

画布canvas1 = new Canvas(bmp);

//paint 定义文字颜色、描边宽度和大小

油漆颜色 = new Paint();

color.setTextSize(35);

color.setColor(Color.BLACK);

//修改画布 canvas1.drawBitmap(BitmapFactory.decodeResource(getResources(),

R.drawable.user_picture_image), 0,0, color);

canvas1.drawText("用户名!", 30, 40, color);

//向地图添加标记

mMap.addMarker(new MarkerOptions().position(USER_POSITION)

.icon(BitmapDescriptorFactory.fromBitmap(bmp))

// Specifies the anchor to be at a particular point in the marker image.

.anchor(0.5f, 1));

这会将 Canvas canvas1 绘制到 GoogleMap mMap 上。代码应该(大部分) 不言而喻,那里有很多教程如何绘制画布。你 可以从 Android 开发者页面中查看 Canvas 和 Drawables 开始。

现在您还想从 URL 下载图片。

URL url = 新 URL(user_image_url);

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setDoInput(true);

conn.connect();

InputStream = conn.getInputStream();

bmImg = BitmapFactory.decodeStream(is);

您必须从后台线程下载图像(您可以使用 AsyncTask 或 Volley)。

之后,您可以将 BitmapFactory.decodeResource(getResources(), R.drawable.user_picture_image) 替换为您下载的图像 bmImg。

【讨论】:

  • 感谢您的回答,但如果我想在自定义标记上添加动画(如 pokestop 上的花朵),我应该如何进行?
猜你喜欢
  • 1970-01-01
  • 2011-01-13
  • 2012-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-19
  • 2011-12-26
  • 1970-01-01
相关资源
最近更新 更多