如何在jquery-locationpicker-plugin中为地图添加样式

时间:2016-04-20 08:46:55

标签: javascript jquery html google-maps geolocation

我使用这个非常实用的Javascript插件让用户在谷歌地图中选择一个点

https://github.com/Logicify/jquery-locationpicker-plugin

http://logicify.github.io/jquery-locationpicker-plugin/

遗憾的是,地图无法自定义并且具有默认样式。看看js(没有缩小),很清楚代码是使用谷歌地图,而且,它并不是很复杂。

我想知道是否有办法使用标准样式对象

来设置地图样式

https://developers.google.com/maps/tutorials/customizing/styling-the-base-map

设置样式将获得github repo上的分支

1 个答案:

答案 0 :(得分:1)

根据the documentation,您可以像这样访问原生的google.maps.Map对象:

var mapContext = $('#us3').locationpicker('map');

这是对google.maps.Map

的引用
mapContext.map 

获得该引用后,您可以设置地图的styles属性:

mapContext.map.set('styles', [
  {
    stylers: [
      {hue: '#890000'},
      {visibility: 'simplified'},
      {gamma: 0.5},
      {weight: 0.5}
    ]
  },
  {
    elementType: 'labels',
    stylers: [{visibility: 'off'}]
  },
  {
    featureType: 'water',
    stylers: [{color: '#890000'}]
  }
]);

proof of concept fiddle

代码段



var locationPickerRef = $('#us3').locationpicker({
  location: {
    latitude: 40.7127837,
    longitude: -74.0059413
  },
  radius: 300,
  inputBinding: {
    latitudeInput: $('#us3-lat'),
    longitudeInput: $('#us3-lon'),
    radiusInput: $('#us3-radius'),
    locationNameInput: $('#us3-address')
  },
  enableAutocomplete: true
})
var mapContext = $('#us3').locationpicker('map');
mapContext.map.set('styles', [{
  stylers: [{
    hue: '#890000'
  }, {
    visibility: 'simplified'
  }, {
    gamma: 0.5
  }, {
    weight: 0.5
  }]
}, {
  elementType: 'labels',
  stylers: [{
    visibility: 'off'
  }]
}, {
  featureType: 'water',
  stylers: [{
    color: '#890000'
  }]
}]);

console.log(locationPickerRef);

<script src="https://maps.googleapis.com/maps/api/js?libraries=places"></script>
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap-theme.min.css" rel="stylesheet" />
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="https://cdn.rawgit.com/Logicify/jquery-locationpicker-plugin/master/dist/locationpicker.jquery.js"></script>
<div class="form-horizontal" style="width: 550px">
  <div class="form-group">
    <label class="col-sm-2 control-label">Location:</label>

    <div class="col-sm-10">
      <input type="text" class="form-control" id="us3-address" />
    </div>
  </div>
  <div class="form-group">
    <label class="col-sm-2 control-label">Radius:</label>

    <div class="col-sm-5">
      <input type="text" class="form-control" id="us3-radius" />
    </div>
  </div>
  <div id="us3" style="<width:></width:> 550px; height: 400px;"></div>
  <div class="clearfix">&nbsp;</div>
  <div class="m-t-small">
    <label class="p-r-small col-sm-1 control-label">Lat.:</label>

    <div class="col-sm-3">
      <input type="text" class="form-control" style="width: 110px" id="us3-lat" />
    </div>
    <label class="p-r-small col-sm-2 control-label">Long.:</label>

    <div class="col-sm-3">
      <input type="text" class="form-control" style="width: 110px" id="us3-lon" />
    </div>
  </div>
  <div class="clearfix"></div>
</div>
&#13;
&#13;
&#13;