根据文档,我发现了这个: geocoder.setBaseCountryCode(COUNTRYCODE);
然而,即使我严格编写国家代码(两种情况:小资本),这都行不通。
任何帮助?
答案 0 :(得分:4)
geocoder.setBaseCountryCode()
不会使地图居中。这将为地理编码设定基准国家,因此,如果您尝试对“普利茅斯”进行地理编码,它将区分英国和马萨诸塞州的城市。
如果您想手动指定国家/地区代码,可以使用GClientGeocoder
,如下所示:
var country_code = "ES"; // Change the country code here
function initialize() {
if (GBrowserIsCompatible()) {
var map = null;
var geocoder = null;
map = new GMap2(document.getElementById("map_canvas"));
geocoder = new GClientGeocoder();
if (geocoder) {
geocoder.getLatLng(
"Country: " + country_code,
function(point) {
if (point) {
map.setCenter(point, 13);
}
}
);
}
}
}
在这种情况下,无需使用设置setBaseCountryCode()
,因为国家/地区代码显然是唯一的。
如果您使用的是Google Maps API的第3版,则可能需要使用google.loader.ClientLocation
将地图自动居中到客户所在的国家/地区Google Demo。这使用客户端的IP地址来确定国家。
代码看起来像这样:
function initialize() {
// Initialize default values
var zoom = 3;
var latlng = new google.maps.LatLng(37.4419, -100.1419);
// If ClientLocation was filled in by the loader, use that info instead
if (google.loader.ClientLocation) {
zoom = 13;
latlng = new google.maps.LatLng( google.loader.ClientLocation.latitude,
google.loader.ClientLocation.longitude);
}
var myOptions = {
zoom: zoom,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var map = new google.maps.Map(document.getElementById("map"), myOptions);
}
请注意,IP地址的地理定位不是一个非常可靠的科学。您将获得ISP的位置,这可能相当远,而且IP到位数据库并不总是最新的更新,因此您可能没有任何特定IP的数据地址。但是,由于您只检查国家/地区,因此误差幅度非常小。
答案 1 :(得分:1)
如果您正在寻找具有ISO国家/地区代码(包含2个和3个字符)的SQL文件,那么您可能还想查看@ http://27.org/isocountrylist/
答案 2 :(得分:0)
从 this Country database 获取信息。
选择所需国家/地区的首都城市,并围绕该地图居中。