小编jhc*_*jhc的帖子

如何获得当前的GoogleMap缩放级别?

在GoogleMap android API v2上,如何获取当前地图缩放级别?在API v1上,曾经有过float MapView.getZoomLevel(),但似乎没有类似于我正在使用的API版本,并且谷歌推荐.

我曾想过使用类变量通过缩放按钮单击侦听器手动保存缩放级别,但这并不能解决夹点式缩放的问题.

为什么我需要当前的缩放级别?我正在将地图范围限制为某个矩形,并希望任何可能会离开此矩形的移动都会反弹.此动画要求我使用缩放级别,如果没有缩放级别,则使用默认的最大缩放级别.我真正想要的是保持移动尝试前使用的缩放级别.

protected void recenterMap() {
    map.getMinZoomLevel();
    if(MAP_BOUNDS.contains(map.getCameraPosition().target) == false) {
        CameraPosition cameraPosition = new CameraPosition.Builder()
        .target(MAP_CENTER)      
        .zoom(current_zoom)
        .build();     

        map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
    } else {
        MAP_CENTER = map.getCameraPosition().target;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,变量current_zoom是我需要定义的.

android google-maps

21
推荐指数
1
解决办法
2万
查看次数

在渠道消费者类中使用django信号

我正在尝试开发一种拍卖类型系统,其中客户下订单,然后不同的商店可以为该订单提供价格.

该系统的一个有趣的部分是,当最初创建订单时,可用的商店将有60秒来提供他们各自的报价.当第一家商店提出要约时,"拍卖"现在只有接下来的20秒才能让其他商店自己出价.如果他们确实提出了另一个报价,在这个较小的分配时间内,那么这20秒就会刷新.只要有足够的时间,优惠可以继续收到,不能超过给定的最初60秒.

class Order(models.Model):
    customer = models.ForeignKey(Customer)
    create_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now_add=True)
    total = models.FloatField(default=0)
    status = models.IntegerField(default=0)
    delivery_address = models.ForeignKey(DeliveryAddress)
    store = models.ForeignKey(Store, null=True, blank=True, related_name='orders', on_delete=models.CASCADE)
    credit_card = models.ForeignKey(CreditCard, null=True, blank=True, related_name='orders')

class OrderOffer(models.Model):
    store = models.ForeignKey(Store, related_name="offers", on_delete=models.CASCADE)
    order = models.ForeignKey(Order, related_name="offers", on_delete=models.CASCADE)
    create_time = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

除了这些要求之外,我还想在新的优惠实时到达时更新客户.为此,我正在使用django-channelsWebSockets的实现.

我有以下consumers.py文件:

from channels.generic.websockets import WebsocketConsumer
from threading import Timer
from api.models import Order, OrderOffer
from django.db.models.signals import post_save
from django.dispatch import receiver

class OrderConsumer(WebsocketConsumer):

    def …
Run Code Online (Sandbox Code Playgroud)

django django-signals django-channels

9
推荐指数
3
解决办法
3090
查看次数

GDAL - gdalbuildvrt"tif文件未被识别为支持的文件格式"


我正在尝试创建一个虚拟光栅(VRT文件),它连接了大量的GeoTIFF栅格.

gdalbuildvrt在Windows 7环境中使用命令.以下是使用的语法.

gdalbuildvrt -input_file_list C:\listing.txt -srcnodata 0 -resolution average O:\mosaicB.vrt
Run Code Online (Sandbox Code Playgroud)

该文件listing.txt包含我要处理的TIF文件的完整路径名.mosaicB.vrt是输出文件.

前几行listing.txt是:

C:\TileCam_GeoTIFF_mosaicb\tf_1422848977_0000069632FN.tif
C:\TileCam_GeoTIFF_mosaicb\tf_1422848977_0000069633FN.tif
C:\TileCam_GeoTIFF_mosaicb\tf_1422848977_0000069634FN.tif
C:\TileCam_GeoTIFF_mosaicb\tf_1422848977_0000069635FN.tif
C:\TileCam_GeoTIFF_mosaicb\tf_1422848977_0000069636FN.tif
C:\TileCam_GeoTIFF_mosaicb\tf_1422848977_0000069638FN.tif
Run Code Online (Sandbox Code Playgroud)

该命令运行了很长一段时间,但最终,我收到警告,最后是一个空的输出文件.我确实得到以下错误,这些错误无限期重复

ERROR 4: 'C:\TileCam_GeoTIFF_mosaicb\tf_1422848977_0000087496FN.tif' not recognised as a supported file format.   
Warning 1: Can't open C:\TileCam_GeoTIFF_mosaicb\tf_1422848977_0000087496FN.tif. Skipping it 
ERROR 4: 'C:\TileCam_GeoTIFF_mosaicb\tf_1422848977_0000087497FN.tif' not recognised as a supported file format. 
Warning 1: Can't open C:\TileCam_GeoTIFF_mosaicb\tf_1422848977_0000087497FN.tif. Skipping it 
ERROR 4: 'C:\TileCam_GeoTIFF_mosaicb\tf_1422848977_0000087498FN.tif' not recognised as a supported file format.
Run Code Online (Sandbox Code Playgroud)

不知道从哪里开始.我有管理员权限,所以这不是权限问题.这些是16位GeoTIFF文件,可在所有GIS程序中读取.我很感激这里的任何帮助.

gis tiff gdal geotiff

7
推荐指数
1
解决办法
1521
查看次数

有没有办法裁剪NETCDF文件?

想象一下,您有一个文件example.nc,其风力数据定义在90N,90S,180E,180W区域.无论如何我可以在linux中使用简单的nc类型命令(不用在matlab/python中提取数据来重写),裁剪此文件以包含一个较小的区域,上面的子集.

例如,30N,10S,60E和30W.

linux netcdf nco cdo-climate

6
推荐指数
2
解决办法
4696
查看次数

如何在Django的多个ForeignKey字段中强制执行不同的值

我在Django中有以下模型:

from django.db import models

class Team(models.Model):
    name = models.CharField(max_length=200)


class Match(models.Model):                                                      
    team_home = models.ForeignKey(Team)                                                      
    team_visitors = models.ForeignKey(Team)                                                       
    league = models.CharField(max_length=200)                                                      
    date_played = models.DateField()  
Run Code Online (Sandbox Code Playgroud)

我们的想法是能够拥有一个"匹配"对象,该对象有两个团队参与某场比赛的比赛.一支球队自己打球真是太奇怪了.我怎么能保证team_home不等于team_visitors

python sql django django-models

6
推荐指数
2
解决办法
757
查看次数

Django oauth2 request.user 返回 AnonymousUser

我是 Django 新手,正在尝试创建一个后端 API 供 iOS 客户端使用。目前我正在使用curl 测试我的API 访问。

我已使用以下方法成功生成了访问令牌:

curl -X POST -d "grant_type=password&username=example_user&password=example_password" http://clientID:clientSecret@localhost:8000/o/token/
Run Code Online (Sandbox Code Playgroud)

产生以下响应 -

{
    "access_token": "oAyNlYuGVk1Sr8oO1EsGnLwOTL7hAY", 
    "scope": "write read", 
    "expires_in": 36000, 
    "token_type": "Bearer", 
    "refresh_token": "pxd5rXzz1zZIKEtmqPgE608a4H9E5m"
}
Run Code Online (Sandbox Code Playgroud)

然后,我使用访问令牌尝试访问以下类视图:

from django.http import JsonResponse
from oauth2_provider.views.generic import ProtectedResourceView
from django.views.decorators.csrf import csrf_exempt
from django.utils.decorators import method_decorator

class post_test(ProtectedResourceView):

    def get(self, request, *args, **kwargs):
        print(request.user)
        return JsonResponse({'Message': "You used a GET request"})

    def post(self, request, *args, **kwargs):
        print(request.user)
        return JsonResponse({'Message': 'You used a POST request'})

    @method_decorator(csrf_exempt)
    def dispatch(self, *args, …
Run Code Online (Sandbox Code Playgroud)

python django oauth-2.0

6
推荐指数
1
解决办法
1281
查看次数

在 systemd 上使用 daphne 运行 django 频道

首先,抱歉问了这么长的问题,我希望你们中的一些人对此有耐心。

TL; DR:如何在 systemd 中正确加载 django 设置?

我正在遵循本指南,使用 Daphne 部署 Django 频道,因此我可以运行一些实时应用程序(使用 WebSockets)。如果没有 nginx,并从命令行运行工作程序 (python manage.py runworker) 和接口 (daphne),我可以访问正确的频道使用者类,如下面的日志所示(这些是从 javascript 客户端触发的) :

2017-10-09 21:10:35,210 - DEBUG - worker - Got message on websocket.connect (reply daphne.response.CYeWgnNQoY!mwuQrazQtv)
2017-10-09 21:10:35,211 - DEBUG - runworker - websocket.connect
2017-10-09 21:10:35,211 - DEBUG - worker - Dispatching message on websocket.connect to api.consumers.OrderConsumer
2017-10-09 21:10:48,132 - DEBUG - worker - Got message on websocket.receive (reply daphne.response.CYeWgnNQoY!mwuQrazQtv)
2017-10-09 21:10:48,132 - DEBUG - runworker - websocket.receive
2017-10-09 …
Run Code Online (Sandbox Code Playgroud)

django nginx systemd django-channels daphne

4
推荐指数
2
解决办法
8622
查看次数

如何向API v2 Google地图标记添加按钮


我正在使用Android谷歌地图应用程序,我遇到地图标记问题.

这个问题可能有一个简单的解决方案,但在搜索之后,我只找到了如何使用按钮添加标记的链接.我想要的是不同的:我想要一个标记,其各自的对话框有一个按钮.

有人做过类似的事吗?

android google-maps marker

3
推荐指数
1
解决办法
4255
查看次数

parseDouble为非null变量抛出NullPointerException


我很乐意从第二只眼睛那里得到一些帮助,因为我一直在努力找出我的代码有什么问题.

在Eclipse IDE中,我试图实现一个谷歌地图的活动,从资产的文件夹(文件读取seaship MMSI码/assets/mmsi.txt),并增加了地图标记,以它们各自的位置.我能够使用BufferedReader该类从该文件中读取,但是在String使用该Double.parseDouble函数将结果行转换为double 时遇到问题.

LogCat检测到以下问题.

01-23 17:59:11.672: E/AndroidRuntime(18242): FATAL EXCEPTION: main
01-23 17:59:11.672: E/AndroidRuntime(18242): java.lang.RuntimeException: Unable to resume activity {com.aquamet.saramap/com.aquamet.saramap.MainActivity}: java.lang.NullPointerException
01-23 17:59:11.672: E/AndroidRuntime(18242):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3128)
01-23 17:59:11.672: E/AndroidRuntime(18242):    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
01-23 17:59:11.672: E/AndroidRuntime(18242):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)
01-23 17:59:11.672: E/AndroidRuntime(18242):    at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-23 17:59:11.672: E/AndroidRuntime(18242):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-23 17:59:11.672: E/AndroidRuntime(18242):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-23 17:59:11.672: E/AndroidRuntime(18242):    at android.os.Looper.loop(Looper.java:123)
01-23 17:59:11.672: E/AndroidRuntime(18242):    at android.app.ActivityThread.main(ActivityThread.java:4627)
01-23 17:59:11.672: E/AndroidRuntime(18242):    at java.lang.reflect.Method.invokeNative(Native Method)
01-23 17:59:11.672: E/AndroidRuntime(18242):    at …
Run Code Online (Sandbox Code Playgroud)

java eclipse android nullpointerexception

1
推荐指数
1
解决办法
2362
查看次数

获取父shell脚本的名称

我在UBUNTU 12.04.

我有一个shell脚本,记录某些进程的输出.记录的进程会根据调用日志记录脚本的父shell脚本而更改.我想将此日志记录的输出写入磁盘上的文件,但是在命名文件时遇到问题.

我很乐意根据父脚本自己的名字来命名.不幸的是,我完全不知道如何从脚本中获取该名称.我想最好的方法是提取父PID($PPID),然后使用它来查找脚本名称,但我也不知道如何做到这一点.

shell ubuntu

1
推荐指数
1
解决办法
180
查看次数

gfortran不懂C风格的评论?

我正在尝试编译WRF包,它主要是用fortran编写的.

该软件包中的大多数文件都有一个前导码,使用C风格的"/*...*/"注释.不幸的是,在编译时,我经常收到这些错误:

/* Copyright (C) 1991-2012 Free Software Foundation, Inc.
 1
Error: Invalid character in name at (1)
../dyn_em/module_big_step_utilities_em.f90:2.3:
Run Code Online (Sandbox Code Playgroud)

我相信我的gfortran版本根本不理解这些类型的评论,并且失败了.我发现这很奇怪,因为我在Red Hat 7上使用"yum install"下载了编译器.

有人可以赐教吗?

fortran rhel gfortran

1
推荐指数
1
解决办法
1459
查看次数