Java Google Map GEO Location示例

利用邮编获取经纬度:

public JSONObject getGeoLocation(String region, String zipCode) {

JSONObject object = new JSONObject();

String url = "{mapGeoUrl}?address={zipCode}&region={region}&key={mapKey}";

Map<String, String> map = getMapInfo();

if(map.containsKey("mapGeoUrl")){

String mapGeoUrl = map.get("mapGeoUrl");

url = url.replace("{mapGeoUrl}", mapGeoUrl);

}

if(map.containsKey("mapKey")){

String mapKey = map.get("mapKey");

url = url.replace("{mapKey}", mapKey);

}

url = url.replace("{zipCode}", zipCode).replace("{region}", region);

DefaultHttpClient httpClient = new DefaultHttpClient();

try{

HttpGet getRequest = new HttpGet(url);

getRequest.addHeader("Content-Type","application/json");

HttpResponse response = httpClient.execute(getRequest);

Integer statusCode = response.getStatusLine().getStatusCode();

if(200 == statusCode){

BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent())));

String str="";

String output;

while ((output=br.readLine()) != null) {

str += output;

}

object = new JSONObject(str);

httpClient.getConnectionManager().shutdown();

}

}catch(Exception e){

// log.info("Get match result exception: "+e);

}

return object;

}

注:region-->country code

      zipCode-->邮编

      mapGeoUrl-->https://maps.googleapis.com/maps/api/geocode/json

转载于:https://my.oschina.net/slightScenery/blog/1919327

Geotools是一个用Java编写的开源GIS工具包,提供了许多用于处理空间数据的工具和库。以下是使用Geotools的一些示例: 1. 创建一个Shapefile: ```java // 创建一个Shapefile File newFile = new File("newShapefile.shp"); Map<String, Serializable> params = new HashMap<String, Serializable>(); params.put(ShapefileDataStoreFactory.URLP.key, newFile.toURI().toURL()); DataStore newDataStore = DataStoreFinder.getDataStore(params); // 定义数据结构 SimpleFeatureTypeBuilder typeBuilder = new SimpleFeatureTypeBuilder(); typeBuilder.setName("Location"); typeBuilder.add("the_geom", Point.class, DefaultGeographicCRS.WGS84); typeBuilder.add("Name", String.class); typeBuilder.add("Number", Integer.class); SimpleFeatureType locationType = typeBuilder.buildFeatureType(); // 将数据写入Shapefile SimpleFeatureBuilder featureBuilder = new SimpleFeatureBuilder(locationType); GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); Point point = geometryFactory.createPoint(new Coordinate(-122.426979, 37.753558)); featureBuilder.add(point); featureBuilder.add("San Francisco"); featureBuilder.add(1); SimpleFeature feature = featureBuilder.buildFeature(null); List<SimpleFeature> features = new ArrayList<SimpleFeature>(); features.add(feature); SimpleFeatureCollection collection = new ListFeatureCollection(locationType, features); newDataStore.createSchema(locationType); Transaction transaction = new DefaultTransaction("create"); String typeName = newDataStore.getTypeNames()[0]; SimpleFeatureSource featureSource = newDataStore.getFeatureSource(typeName); if (featureSource instanceof SimpleFeatureStore) { SimpleFeatureStore featureStore = (SimpleFeatureStore) featureSource; featureStore.setTransaction(transaction); try { featureStore.addFeatures(collection); transaction.commit(); } catch (Exception e) { e.printStackTrace(); transaction.rollback(); } finally { transaction.close(); } } newDataStore.dispose(); ``` 2. 读取一个Shapefile: ```java // 读取一个Shapefile File file = new File("shapefile.shp"); Map<String, Object> map = new HashMap<String, Object>(); map.put("url", file.toURI().toURL()); DataStore dataStore = DataStoreFinder.getDataStore(map); String typeName = dataStore.getTypeNames()[0]; SimpleFeatureSource featureSource = dataStore.getFeatureSource(typeName); SimpleFeatureCollection collection = featureSource.getFeatures(); SimpleFeatureIterator iterator = collection.features(); while (iterator.hasNext()) { SimpleFeature feature = iterator.next(); System.out.println(feature.getID() + ": " + feature.getAttribute("Name")); } iterator.close(); dataStore.dispose(); ``` 3. 进行空间查询: ```java // 进行空间查询 File file = new File("shapefile.shp"); Map<String, Object> map = new HashMap<String, Object>(); map.put("url", file.toURI().toURL()); DataStore dataStore = DataStoreFinder.getDataStore(map); String typeName = dataStore.getTypeNames()[0]; SimpleFeatureSource featureSource = dataStore.getFeatureSource(typeName); Filter filter = CQL.toFilter("CONTAINS(the_geom, POINT(-122.426979 37.753558))"); SimpleFeatureCollection collection = featureSource.getFeatures(filter); SimpleFeatureIterator iterator = collection.features(); while (iterator.hasNext()) { SimpleFeature feature = iterator.next(); System.out.println(feature.getID() + ": " + feature.getAttribute("Name")); } iterator.close(); dataStore.dispose(); ``` 这些示例演示了一些基本的Geotools操作,更多的用法可以在Geotools官方文档中找到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值