cartodb データベースに geojson をロードしました。そして、CSVファイルもあります。名前フィールドは、GeoJSON ファイルと CSV ファイルの両方で共通です。CSV の場所名が GeoJSON の場所名と一致する場合にのみ、対応するジオメトリを GeoJSON から Google マップに追加するだけのロジックを作成しました。今私の問題は、GeoJSON データが CartoDB データベースにロードされた後に完全に一致することです。しかし、cartodb データベースの GeoJSON からのジオメトリが Google マップに追加されると (CSV の地名が GeoJSON の地名と一致する場合)、Google マップのデータにわずかなシフトがあるように見えます。これは、程度が適切に設定されていなかったことが原因であると思います。Googleマップのデータ私のコードは以下です。
var data = {
"type": "FeatureCollection",
"features": feature
};
var layer = "toner-lite";
var styles = [
{
featureType: 'water',
elementType: 'geometry',
stylers: [
{hue: '#000000'},
{saturation: 100},
{lightness: -100}
]
}
];
var mapProp = {
center: new google.maps.LatLng(38.75597, -77.974228),
zoom: 4,
disableDefaultUI: true,
zoomControl: true,
zoomControlOptions: {
position: google.maps.ControlPosition.LEFT_TOP
},
mapTypeId: layer,
mapTypeControlOptions: {
mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'map_style']
}
};
var styledMap = new google.maps.StyledMapType(styles,
{name: "Styled Map"});
var map = new google.maps.Map(document.getElementById("googlemaps"), mapProp);
var geocoder = new google.maps.Geocoder();
var bounds = new google.maps.LatLngBounds();
map.mapTypes.set('map_style', styledMap);
map.setMapTypeId('map_style');
//map.mapTypes.set(layer, new google.maps.StamenMapType(layer));
map.data.addGeoJson(data);
上記のコードでは、オブジェクト データはキー「features」に対して値「feature」を持ちます。価値機能の構造は以下のようになります