Есть ли способ отобразить одну страну на карте Google? Это должна быть только одна страна, не включая детали из других стран
Мне нужно отобразить только одну страну на карте Google. Мне нужно отобразить только одну страну, и части других стран не должны быть там. Например, если я хочу отобразить Великобританию, она должна отображать только Великобританию и море, никакие части из других стран не должны быть видны.
Есть ли вызов Google API или любой другой метод? Я не мог найти метод, который переопределяет масштабирование и переопределяет методы, по которым они могут перемещаться по региону (прокрутка событий).
Кто-нибудь знает способ сделать это?
8 ответов
Если вы отключите все элементы карты, а затем добавите новый слой (одну страну), то будет видна только одна страна. Вот jsfiddle https://jsfiddle.net/gvvy5vxz/2/
function initialize() {
var mapOptions = {
zoom: 5,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
backgroundColor: '#FFF',
disableDefaultUI: true,
draggable: false,
scaleControl: false,
scrollwheel: false,
styles: [
{
"featureType": "water",
"elementType": "geometry",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "landscape",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "road",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "administrative",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "poi",
"stylers": [
{ "visibility": "off" }
]
},{
"featureType": "administrative",
"stylers": [
{ "visibility": "off" }
]
},{
"elementType": "labels",
"stylers": [
{ "visibility": "off" }
]
}
]
};
Я искал то же самое и в итоге использовал наложение полигонов.
Соответствующий код находится под комментарием "вот магия".
Уменьшите масштаб полностью, и вы увидите гигантский белый квадрат. Это 0-й индекс массива в файле json (связан с map.data.loadGeoJson) "[[-147, 2], [-150, 70], [-20, 68], [-31, 5], [-147, 2]]", the next index is the border coordinate points of the region you're interested in.
Search for "kml {country/city/state/region name}" in google and you'll probably find all that data with the border outline points.
https://jsfiddle.net/jmao2o3o/3/
//here is the magic
map.data.loadGeoJson('https://bitbucket.org/dimaboychev/public/raw/9bb53aba0d70875a6d2d9bd2a1eec65671ce4ae3/dc.json');
Я также искал решение для карт Google, и до сих пор самое близкое, что я нашел, это отображение диаграммы определенной страны: http://code.google.com/apis/chart/interactive/docs/gallery/geomap.html. Посмотрите также на этот вопрос: Могу ли я показать одну страну (замаскированную) в GoogleMaps?
Вы можете сделать это, используя Fusion Tables.
http://www.geocodezip.com/geoxml3_test/v3_FusionTables_query_sidebarF_local.html?country=India
С уважением
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Mapping</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}
#map {
border: 2px solid #333;
width: 80vw;
height: 80vh;
}
</style>
</head>
<body>
<div id="map"></div>
<script src="./keys.js"></script>
<script>
let map;
document.addEventListener("DOMContentLoaded", () => {
let s = document.createElement("script");
document.head.appendChild(s);
s.addEventListener("load", () => {
//script has loaded
console.log("script has loaded");
map = new google.maps.Map(document.getElementById("map"), {
center: {
lat: 45.3496711,
lng: -75.7569551
},
zoom: 16,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
});
s.src = `https://maps.googleapis.com/maps/api/js?key=${MAPKEY}`;
});
</script>
</body>
</html>
Я думаю, что лучше / нет вспышки /, но решение SVG - это географические диаграммы от Google: https://developers.google.com/chart/interactive/docs/gallery/geochart?hl=pl
Вы можете поиграть с этим здесь:
https://code.google.com/apis/ajax/playground/?type=visualization&hl=pl
Другие страны потускнели, поэтому это может удовлетворить ваши потребности
Даже у меня было подобное требование, и после долгих поисков я нашел это
<style>
#visualization svg path[fill^='none'] {
stroke-width: 0px;
}
</style>
[Примечание: #visualization - это идентификатор тега, в котором мы визуализируем график.]
Это в основном уменьшает ширину штриха для других стран, также не забудьте поставить это
var options = {
...,
...,
datalessRegionColor: 'transparent',
...,
...
};
в части параметров визуализации.
В официальной документации Google Maps есть пример.
https://developers.google.com/maps/documentation/javascript/examples/control-bounds-restriction