如何改变世界地图json文件的中央子午线?

时间:2016-04-20 10:48:11

标签: javascript json dictionary d3.js geojson

我已经加载了世界地图的json文件并使用了d3。然而,俄罗斯的一部分位于地图的另一侧,毗邻阿拉斯加州。

json文件是从我导出为未投影(WGS84)

的shapefile创建的

有没有办法改变中央子午线,以便俄罗斯不分裂? 我已经尝试在d3中更改中心,但它没有用。

参考代码:

d3.json("data/world.json", function (error, myMap) {

    if (error) return console.error(errorMap);
    var myMapFeatures = topojson.feature(myMap, myMap.objects.world);

    var projection = d3.geo.mercator()
        .center([30,39])
        .scale(width*.10)
        .translate([width/2, height/2]);
    var geoProjectionPath = d3.geo.path()
        .projection(projection);

svg.selectAll("path")
    .data(myMapFeatures.features)
    .enter()
    .append("path")
    .attr("class", function(d) { 
        return "country " + d.properties.Terr_Name; 
        })
    .attr("d", geoProjectionPath);

})

1 个答案:

答案 0 :(得分:1)

您可以在投影

var projection = d3.geo.equirectangular() .center([30,39]) .scale(100) .rotate([-90,0]);//this will make Russia unsplit 帮助下处理此问题
var parameters: [String : AnyObject ] = [
        "email" : "123@gmail.com",
        "password" : "password",
        "full_name": "XXX",
        "profile_pic" : UIImage(named: "abc")!
        ]
Alamofire.upload(
        .POST,
        "http://abc/public/user/register",
        multipartFormData: { multipartFormData in


            for (key, value) in parameters {

            multipartFormData.appendBodyPart(data: value.dataUsingEncoding(NSUTF8StringEncoding)!, name: key)
            }
        },
        encodingCompletion: { encodingResult in
            switch encodingResult {
            case .Success(let upload, _, _):
                upload.responseJSON { response in


                    debugPrint(response)

                }
            case .Failure(let encodingError):
                print(encodingError)
            }
        }
    )

工作代码here