如何从城市名称获取GWT的MapVisualization的纬度/经度?

时间:2011-12-05 01:49:10

标签: google-app-engine google-maps gwt google-visualization gwt-rpc

是否有可能只从城市名称或街道名称获取Google地图的纬度和经度代码?

例如:我只想要巴黎(法国)的纬度和经度代码,因此我可以将其用于Google的MapVisualization(Google Web Toolkit,Google App Engine和RPC)。

因为每个城市每次都能找到纬度和经度代码非常不方便。

package com.practicum.client.out;

import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.visualization.client.DataTable;
import com.google.gwt.visualization.client.AbstractDataTable.ColumnType;
import com.google.gwt.visualization.client.visualizations.MapVisualization;
import com.google.gwt.visualization.client.visualizations.MapVisualization.Options;


public class DataOutGoogleMap {

public DataOutGoogleMap(Runnable runnable) {
}

public Widget createGoogleMapView() {
    DataTable data = DataTable.create();
    data.addColumn(ColumnType.NUMBER, "Lat");
    data.addColumn(ColumnType.NUMBER, "Lon");
    data.addColumn(ColumnType.STRING, "Name");
    data.addRows(3);

    data.setValue(0, 0, 52.37022);
    data.setValue(0, 1, 4.89517);
    data.setValue(0, 2, "This is Amsterdam");

    data.setValue(1, 0, 51.50813);
    data.setValue(1, 1, -0.12801);
    data.setValue(1, 2, "This is London");

    data.setValue(2, 0, "Paris, France"); // DONT WORK?
    data.setValue(2, 1, "");
    data.setValue(2, 2, "This is Paris");

    Options options = Options.create();
    options.setEnableScrollWheel(true);
    options.setMapType(MapVisualization.Type.NORMAL);
    options.setShowTip(true);

    return new MapVisualization(data, options, "400px", "300px");
    }
}

2 个答案:

答案 0 :(得分:1)

这可以通过Google Geocoding API来完成。例如,要查找Paris的lat和lng,您可以提交

GET
http://maps.googleapis.com/maps/api/geocode/json?address=Paris,+France&sensor=false

并且所需的lat和lng包含在JSON响应中的“几何”字典中名为“location”的键中:

 "geometry" : {
            ...
            "location" : {
               "lat" : 48.8566140,
               "lng" : 2.35222190
            },

答案 1 :(得分:0)

您需要下载城市的位置数据库,例如this one,并在需要时使用它来查找它们。