如何在Android中创建交互式地图

EGH*_*HDK 6 java android google-maps opengl-es android-webview

我需要我的应用程序的一部分,以获得由大约10栋建筑组成的正方形区域的交互式地图.您必须能够点击建筑物并获得有关它的一些信息.我知道有几种方法可以解决这个问题,但我希望有一些背景知识的人可以给我一些提示.

以下是我可以考虑实现这一目标的一些方法.

谷歌地图

我已经实现了Google Maps API,但效果很好,但实际上并没有我想要的效果.Google地图需要互联网连接,您可以访问整个地图.我需要把它锁在一个区域.

网页视图

这似乎是一个很好的选择.我确信我可以提供一个简单的图像映射,当您单击某个建筑物时,它会为您提供更多信息.唯一的问题是你还需要一个互联网连接.

OpenGL的?

我从来没有真正研究过这个问题,但我听说实施起来很困难而且很痛苦.它可以在本地运行,但值得吗?

有没有其他方法可以开发交互式地图?需要记住的是,我有一天也想把它移植到iOS上(如果有人也有这方面的经验)

Sru*_*Suk 5

从一开始回答您的问题可能需要 10 页。

  1. 我们先看这里:https : //developers.google.com/maps/documentation/android/hello-mapview

  2. 在您能够使用 MapView 之后,您只需要创建您的 ItemizedOverlay 类。

用教程中的 HelloItemizedOverlay 替换这个类。

public class GooglerMapItemizedOverlay extends ItemizedOverlay {

    private ArrayList<OverlayItem> mOverlayItems = new ArrayList<OverlayItem>();
    private Context mContext;
    private Paint rectPaint, textPaint;

    public GooglerMapItemizedOverlay(Drawable defaultMarker, Context context) {
        super(boundCenterBottom(defaultMarker));

        mContext = context;
        populate(); 
    }

    @Override
    protected OverlayItem createItem(int i) {
        return mOverlayItems.get(i);
    }

    public void addOverlayItem(OverlayItem overlay) {
        mOverlayItems.add(overlay);
        populate();
    }

    @Override
    public int size() {
        return mOverlayItems.size();
    }

    public void clear(){
        mOverlayItems.clear();
        populate(); 
    }

    @Override
    protected boolean onTap(int index) {
        // information goes here
      OverlayItem item = mOverlayItems.get(index);
      AlertDialog.Builder dialog = new AlertDialog.Builder(mContext);
      dialog.setTitle(item.getTitle());
      dialog.setMessage(item.getSnippet());
      dialog.show();
      return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。


Min*_*ire 5

如果你想要完全控制并且习惯使用html和javascript,我强烈建议使用开源OpenLayers库.您可以创建一个html页面,将其保存在资产中并在设备上本地运行.您可以创建自己的一组地图图块,甚至可以使用一个单独的jpeg文件,然后在其上"映射"您想要的建筑物,然后使用简单但广泛的OpenLayers API来进行建筑选择和信息显示.它甚至还具有内置的多点触控功能,可用于平移和缩放.适用于移动设备.

您可以在此处查看示例列表.在任何示例上执行简单的视图源将使您清楚地了解它们正在做什么.您还可以查看此示例,该示例在闪烁的地图区域绘制一组图像缩略图,并且可以单击以获取更多详细信息.此示例使用在线提要,但您可以轻松使用本地提要..甚至可以从应用程序传递到webview.

PS.除了积极地将它用于我的项目之外,我与OpenLayers没有任何关系.