我正在寻找一个JavaScript库,它允许我从本地托管的形状数据构建SVG地图(允许用户在没有互联网连接的情况下使用该应用程序).
1)我应该在哪里看?
2)GeoJson是形状数据的良好候选者吗?
3)我在哪里可以找到国家边界和(1级深)地方实体的形状数据?
如果图书馆也支持绘制圆圈,其中心点位于特定的纬度/经度坐标处,那将是一个奖励:)
我想在我的应用程序中添加路由应用程序覆盖文件,我创建了一个geojson文件:
{"type":
"MultiPolygon","coordinates":[
[-1.897287,39.035986],
[-1.862268,39.022384],
[-1.841154,39.000643],
[-1.831369,38.980829],
[-1.862869,38.967084],
[-1.887503,38.976226],
[-1.899261,39.007379]
]
}
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误:
JSON file you uploaded was invalid. Errors : Each set of coordinates provided must be valid : [Ljava.lang.Object;@7de9b790
Run Code Online (Sandbox Code Playgroud)
我的错是什么?
谢谢!
找不到在couchbase中使用Geo Views的文档/ howtos/examples.
简化任务:我的文档如下:
{
x:10,
y:15,
color:"RED"
}
Run Code Online (Sandbox Code Playgroud)
我需要找到正方形中的所有蓝点
{top:1,left:1,right:34,bottom:77}
Run Code Online (Sandbox Code Playgroud) 我收到错误"无法从对象中提取地理键,格式错误的几何体?".多边形是关闭的,格式看起来很好,因为它正确插入Mongo.我正在使用Mongo版本2.6.3,在Centos 6.5 x64上运行.
下面的多边形有什么问题?我非常密切地关注了Mongo的例子.
db.test.remove({});
db.test.insert({testPoly: {type: "Polygon", coordinates: [[0,0],[0,20],[10,30],[20,20],[20,0],[0,0]]}});
db.test.ensureIndex({testPoly: "2dsphere" });
db.test.find();
/* 0 */
{
"connectionId" : 2385,
"err" : "Can't extract geo keys from object, malformed geometry?: { _id: ObjectId('54008301eb55d4628c080370'), testPoly: { type: \"Polygon\", coordinates: [ [ 0.0, 0.0 ], [ 0.0, 20.0 ], [ 10.0, 30.0 ], [ 20.0, 20.0 ], [ 20.0, 0.0 ], [ 0.0, 0.0 ] ] } }",
"code" : 16755,
"n" : 0,
"ok" : 1
}
/* 0 */ …Run Code Online (Sandbox Code Playgroud) 我想将google-maps与angular.js同步,因此我为google-maps创建了自定义指令.
码
var map;
map = new google.maps.Map(document.getElementById('map'),
mapOptions);
scope.$watch('geojson', function(newVal, oldVal) {
if (newVal !== oldVal) {
map.data.setMap(null);
map = new google.maps.Map(document.getElementById('map'),
mapOptions);
map.data.addGeoJson(scope.geojson);
}
}, true);
Run Code Online (Sandbox Code Playgroud)
我的解决方案有效,但它不是我想要实现的,当数据发生变化时,每次使用新的scope.geojson加载map,遗憾的是我找不到任何好的解决方案如何删除数据,我认为没有将geojson数据添加为图层的一些选项?然后在添加新的geojson之前清除此图层,这样map将是稳定的,只有geojson数据会改变?
我已使用以下方法在地图上实现了click事件
google.maps.event.addListener(map, 'click', mapclick);
而且一切正常。
我还在地图上添加了geojson图层。因此,问题是当我单击覆盖的geojson图层(实际上是多边形图层)时,未触发地图单击事件。因此,我的问题是,当我单击地图上的叠加层时,如何使地图单击事件也起作用?
我目前正在使用Google Maps API,并且尝试将带有标记的GEOJSON文件作为图层连接到地图。
我从文档中摘录的行现在正在尝试使用:
GeoJsonLayer layer = new GeoJsonLayer(getMap(), R.raw.geoJsonFile,
getApplicationContext());
Run Code Online (Sandbox Code Playgroud)
错误是 Cannot resolve symbol 'GeoJsonLayer'
我已经将编译添加org.json:json:20090211到了我的依赖项中,但这并没有解决问题。
我正在使用Android Studio为Android OS编码。
有什么帮助吗?谢谢
编辑:
班级代码:
package com.example.macbookair........;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.maps.android.geojson.GeoJsonLayer;
import org.json.JSONException;
import java.io.IOException;
public class Maps extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
private GeoJsonLayer layer1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Google Maps API在Google地图上绘制GeoJSON LineString.
我将GeoJSON对象作为AJAX响应并使用"map.data.addGeoJson(data)"函数在地图上加载GeoJSON响应.
GPS纬度和长点全部从Open Street Maps网站的.gpx文件中删除,然后放入数据库.然后将它们编译成GeoJSON格式,然后发送到网站.
各个点都在德国,但轨迹在索马里附近.
有人可以帮我吗?
包含AJAX请求的initMap函数如下:
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: {lat: 53.44620230866472, lng: 9.666813185187198},
mapTypeId: google.maps.MapTypeId.TERRAIN,
});
$.ajax({
url: 'http://ADDRESS TO SERVER/api/geodata/getLineString',
data: {"usrid":3,"startd":"2016-04-17","endd":"2016-04-18"},
type: 'POST',
success: function (response) {
map.data.addGeoJson(response);
},
error: function () {
alert("error");
},
});
}
Run Code Online (Sandbox Code Playgroud)
整个GeoJSON响应如下:
{
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": [
[
51.731921404763426,
14.342405595236764
],
[
51.731914999999994,
14.342412
],
[
51.73192399392278,
14.342408729482642
],
[
51.73193,
14.342416000000004
],
[ …Run Code Online (Sandbox Code Playgroud) 我有一个字符串变量作为javascript中的statesData,当我在控制台中将它作为console.log(statesData)打印时,它给我输出为
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
74.987712893238,
16.4611124595779
],
[
75.0794873366632,
16.4216041790002
],
[
74.9914167945422,
16.5154363453721
],
[
74.987712893238,
16.4611124595779
]
]
]
},
"properties": {
"f1": "Bagalkot District",
"f2": 4,
"f3": 0.0327269593968744
}
},
{
"type": "Feature",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
75.6708769115599,
14.7838624856797
],
[
75.7046235678866,
14.7698699696418
],
[
75.7497789666211,
14.9338893073175
],
[
75.6988619436357,
14.9320185378459
],
[
75.721037483182,
14.8603111097135
],
[
75.6708769115599,
14.7838624856797
] …Run Code Online (Sandbox Code Playgroud) 我有一个GeoJSON数据集,它有点和多边形.我有一个简单的Leaflet代码,可以将它们读入地图,如下所示:
var MyLayer = new L.GeoJSON.AJAX("/UrbanSyntax/Desarrollo/twitter /data/boxtest.json", {
pointToLayer: function(feature, latlng) {
return new L.CircleMarker(latlng, {
radius: 3,
fillOpacity: 0.75,
color: getColor(feature.properties.created_at)
});
},
onEachFeature: function(feature, layer) {
layer.bindPopup(
feature.properties.created_at + '<br />'
+ feature.geometry.coordinates + '<br />'
+ feature.properties.user )
}
});
Run Code Online (Sandbox Code Playgroud)
大多数数据都是多边形,但我需要将它们转换为点(多边形中心)以简化地图.我不希望在解析时更改原始GeoJSON,因为稍后可能需要这些多边形.
我不知道在哪里"注入"代码来读取多边形边界,计算一个中心并发送一个latlng来制作一个圆圈标记.就像现在一样,代码读取json中的点和多边形确定,但数据中的多边形太多,因此浏览器会冻结.当我从JSON过滤掉多边形并只映射点时,它可以正常工作.我的想法已经用完了,在JSON章节中,Leaflet文档非常缺乏......我只需要在pointToLayer代码中放置一个if,将点与多边形分开,并将它们全部映射为点.
提前致谢!
有任何想法吗?