2

我正在开发一个 Android 应用程序,它获取用户的当前位置并显示靠近他/她位置的餐馆列表。餐厅的数据可供我使用(即我确实有我想在搜索结果中显示的每家餐厅的纬度/经度)。我不能使用 Google Places API,因为我只需要显示我们数据库(在我们的网站)中可用的那些餐馆。我的问题是如何访问计算机上的数据库(甚至是 URL),以提取餐馆的数据并在我的 android 应用程序中显示为搜索结果?
我实际上正在制作无缝(http://bit.ly/Jp7pUN) 我公司的类型应用程序。我是 android 应用程序开发的新手。所以,如果这真的是一个非常广泛或愚蠢的问题,请原谅我。请告诉我我需要学习哪些主题来实现这一点。我会自己学习和做。

谢谢。

4

2 回答 2

1

你会需要:

  • 用于存储餐厅及其经度/纬度的Sqlite 数据库
  • 用于显示地图的MapView(不要忘记注册您的 Google Maps API 密钥
  • 地图叠加层以显示地图上的标记
  • GPS访问获取用户位置(需要相应的Android权限
  • 一种简单的搜索算法,用于检索距离用户位置 x 距离内的餐馆结果集

编辑

如果您的数据库存储在服务器上,您将需要一种查询服务器的方法,最好使用基于 HTTP 的协议,例如REST在 Android 设备(使用 Sqlite)上缓存餐厅位置很有用(但不是必需的) ,以防用户离线(好消息:由于您可以在 Android 和服务器上使用 Java,90% 的数据访问层,您只需要编写一次)。

对于从服务器到 Android 客户端的数据传输,JSON是一种流行的格式。

于 2012-05-20T09:48:12.237 回答
1

要访问您计算机上的数据库(不是 Android 上的 SQLite),您应该使用 url 将您的数据库服务器更改localhost为:10.0.2.2。但是如果您的数据库将在 Internet 上 - 您应该创建一些 REST API 来获取您需要的数据。然后用于HttpClient从服务器获取数据。

您需要的一切都在开发人员指南中:MapView 并且为了检索当前位置,我建议使用MyLocationOverlay

例如(到服务器的 URL):

//public static final String SERVER_ADDRESS = "http://10.0.2.2:3000"; // for localhost server
public static final String SERVER_ADDRESS = "http://railsserver.herokuapp.com"; //for remote server

访问服务器上的数据 - 这取决于您如何实现(以及使用什么技术)您的服务器(REST API?、WebService?、纯 HTML?)以及来自服务器的响应格式(JSON?XML?, ETC。)

我建议使用 JSON,因为使用 Android SDK 中包含的类很容易解析:

        String json = execute(new HttpGet(Constants.SERVER_URL + "/fetchData"));
        JSONObject responseJSON = new JSONObject(json);
        if(responseJSON.has("auth_error")) {
            throw new IOException("fetchData_error");
        }
于 2012-05-20T09:54:02.327 回答